Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF-如何在使用MVVM从主窗口调用ChildWindow时隐藏该窗口上的按钮_C#_Wpf_Mvvm - Fatal编程技术网

C# WPF-如何在使用MVVM从主窗口调用ChildWindow时隐藏该窗口上的按钮

C# WPF-如何在使用MVVM从主窗口调用ChildWindow时隐藏该窗口上的按钮,c#,wpf,mvvm,C#,Wpf,Mvvm,我有两个WPF表单(MainWindow和ChildWindow),它们的不同视图模型已经就位(MainViewModel和ChildViewModel)来管理事件 当我单击main窗口上的菜单项打开ChildWindow时,我希望在ChildWindow中隐藏一个特定的按钮 如何使用MVVM执行此操作?在子窗口的VM上 放置一个布尔属性(与VM上的其他属性一样具有更改通知),如果为true,则会显示按钮,如果为false,则会隐藏按钮 在按钮的Visibility属性上,绑定到VM属性,并使用

我有两个WPF表单(
MainWindow
ChildWindow
),它们的不同视图模型已经就位(
MainViewModel
ChildViewModel
)来管理事件

当我单击
main窗口
上的菜单项打开
ChildWindow
时,我希望在
ChildWindow
中隐藏一个特定的按钮


如何使用MVVM执行此操作?

在子窗口的VM上

  • 放置一个布尔属性(与VM上的其他属性一样具有更改通知),如果为true,则会显示按钮,如果为false,则会隐藏按钮
  • 在按钮的
    Visibility
    属性上,绑定到VM属性,并使用布尔值到可见性转换器(已经在页面的资源中定义了一个转换器,当然可以使用它)获取真/假值并将其更改为可见性值

  • 本文没有深入了解MVVM的完整历史,但它提供了一个基本示例来帮助您使用MVVM和绑定:


    请发布您的代码/xaml您是如何打开
    儿童窗口的
    以及从哪里打开的?例如,您可以通过从视图中绑定的公共属性返回
    bool
    ,将
    bool
    或其他内容传递给它的构造函数,告诉它是否要隐藏
    按钮。。直到我进入子窗口的viewmodel(构造函数调用?)。然后就是添加参数/属性。至于扩展某些内容而不破坏它,我建议查看
    事件聚合器
    ,如PRISM库中的
    PubSubEvent
    、MVVM light或等效工具。