Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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# 如何使用ViewModel在视图中按下按钮_C#_Wpf_Mvvm - Fatal编程技术网

C# 如何使用ViewModel在视图中按下按钮

C# 如何使用ViewModel在视图中按下按钮,c#,wpf,mvvm,C#,Wpf,Mvvm,我是WPF的新手,我知道ViewModel与View没有任何通信。我试图在我的应用程序中遵循MVVM模式,我想使用ViewModel在视图中按下一个按钮。成功登录后,我想在视图中显示一个特定的网格。这也可以通过按下“X”按钮来完成。当“X”按钮具有焦点时,它将显示以下网格 ..<Grid.Style> <Style TargetType="Grid"> <Style.Triggers>

我是WPF的新手,我知道ViewModel与View没有任何通信。我试图在我的应用程序中遵循MVVM模式,我想使用ViewModel在视图中按下一个按钮。成功登录后,我想在视图中显示一个特定的网格。这也可以通过按下“X”按钮来完成。当“X”按钮具有焦点时,它将显示以下网格

        ..<Grid.Style>
            <Style TargetType="Grid">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsFocused, ElementName=X}"
                             Value="False">
                        <Setter Property="Visibility" Value="Collapsed"/>
                    </DataTrigger>
                 <Style.Triggers>
            </Style>
        </Grid.Style>..
。。
..
在这种情况下,如何使用ViewModel显示此网格


任何帮助都将不胜感激。

您可以通过执行绑定到按钮的
命令来“按下”按钮(一个
ICommand
类型的命令)。这不会在按下按钮时给出任何视觉指示,但会在背景中产生相同的效果。还可以将属性绑定到栅格的
IsFocused
属性,通过更改ViewModel中的属性来切换可见性

可以将按钮的IsFocused属性绑定到viewmodel上的属性。用户成功登录后,将viewmodel中的IsFocused属性设置为适当的值

在MVVM中,ViewModel是视图的状态。您的陈述“ViewModel与View没有任何通信”是不正确的。视图和视图模型通过绑定进行“对话”。WPF中内置的绑定引擎功能非常强大,它不仅可以让您绑定到可视化树中的不同元素,还可以绑定到DataContext上的公共属性

有关如何从代码设置IsFocused属性的相关问题,请参见-


希望有帮助

谢谢你的回答。你的意思是说按钮的属性是聚焦的吗?如果是,则按钮上没有IsFocused属性。我试过使用聚焦,但它不起作用。你知道我做错了什么吗?是的,我是说按钮的
IsFocused
。当您更改值,即更改ViewModel时,它将触发网格上的数据触发器,因为它绑定到“X”按钮的
IsFocused
。然而,Focusable只是一个属性,它告诉您一个元素是否可以被聚焦。