我的Xaml页面上有一个按钮,它的可见性绑定到视图模型中Type:SYSTEM.Windows.Visibility
的变量,第一次加载页面时是否将变量设置为Hidden或Visible,它工作正常。但是当我将变量更改为其他状态时,我做了一些操作,我的GUI没有更新。
这是我的xaml和MVVM
<Button Content="Extend" Name="btnExtend" Command="{Binding ExtendCommand}" Visibility="{Binding isVisible}" Grid.Row="2" Grid.Column="2" HorizontalAlignment="Right" Width="80" Margin="0,0,100,0" Height="25"/>
并查看模型:
Public Property isVisible As System.Windows.Visibility
Public Sub New()
isVisible = System.Windows.Visibility.Visible
End Sub
Public Sub diable()
isVisible = System.Windows.Visibility.Visible
End Sub
我读了一些主题,将变量更改为Boolean
并使用BooleanToVisibilityConverter
,我也试过了,但结果是一样的。
我真的不明白我做错了。
答案 0 :(得分:4)
你的xaml代码应该是
<Button Content="Extend" Name="btnExtend" Command="{Binding ExtendCommand}" Visibility="{Binding isVisible,Mode=Twoway}" Grid.Row="2" Grid.Column="2" HorizontalAlignment="Right" Width="80" Margin="0,0,100,0" Height="25"/>
并且您的Viewmodel代码应该是
private Visibility _isVisible ;
public Visibility isVisible
{
get { return _isVisible ;}
set { _isVisible = value;RaisePropertyChanged("isVisible ");}
}
答案 1 :(得分:3)
检查这些链接:
http://msdn.microsoft.com/en-us/library/ms743695.aspx
http://www.daedtech.com/wpf-and-notifying-property-change
通过实现INotifyPropertyChanged接口告诉您的视图已更改属性。
答案 2 :(得分:1)
您需要在公共属性的setter中触发OnPropertyChanged()事件,以通知您对UI的更改。查看代码,我似乎错过了OnPorpertyChanged()事件实现。
另一种方法可以是布尔值。而不是make Visibility属性,创建一个Boolean属性并编写一个名为“BooleanToVisibility”的转换器,它将转换“Visibility”依赖属性的值。
在ResourceDictionary中将Converter定义为静态资源,然后您可以在整个应用程序中使用它。转换器方法可以避免在每个视图模型中重写显示/隐藏逻辑。
如果您需要转换器上的工作示例,请与我们联系。