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