我是WPF的新手,我知道ViewModel与View没有任何通信。我试图在我的应用程序中遵循MVVM模式,我想使用ViewModel按下View中的按钮。例如:成功登录后,我想在视图中显示一个特定的网格。这也可以通过按下' X'按钮&#39 ;.当' 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显示此网格?
任何帮助都将不胜感激。
答案 0 :(得分:0)
您可以通过执行绑定到按钮的Command
(ICommand
类型的命令)来“按下”按钮。这不会给按钮按下任何视觉指示,但会在后台产生相同的效果。您还可以将属性绑定到网格的IsFocused
属性,以通过更改ViewModel中的属性来切换可见性。
答案 1 :(得分:0)
您可以将按钮的IsFocused属性绑定到viewmodel上的属性。用户成功登录后,将viewmodel中的IsFocused属性设置为适当的值。
在MVVM中,ViewModel是View的状态。你声明,&#34; ViewModel与View&#34;没有任何关系。是不正确的。 View和ViewModel&#39; talk&#39;通过绑定。 WPF内置的绑定引擎非常强大,它不仅可以绑定到可视树中的不同元素,还可以绑定到DataContext上的公共属性。
请参阅有关如何从代码设置IsFocused属性的相关问题 - Related Question
希望有所帮助。