我的Silverlight应用程序的简化架构结合:用户控件能见度通过视图模型
- 的MainPage; DataContext的集合到MainViewModel
- 的MainPage有两个要素:用户控件和矩形
- 在MainViewModel,我有两个属性,UserControlVisible和RectVisible,两个类型的可见性,在MainPage.xaml中
- 绑定到这两个元件的可见性属性MainViewModel有INotifyPropertyChanged的实施
问题是,当我设置在MainViewModel到Visibility.Collapsed RectVisible财产,矩形隐藏,这是很好的,但是当我设置Visibility.Collapsed到用户控件(UserControlVisible属性),它从来没有隐藏!
我无法隐藏该用户控件,我必须通过ViewModel类来完成。为什么它可以与Rectangle元素一起使用,但不能与UserControl一起使用?当我手动将可见性设置为Collapsed in XAML时,它隐藏了,但我必须通过代码和ViewModel对象来完成。
(编辑)临时sollution:
我手动订阅PropertyChanged事件中的代码隐藏
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
viewmodel=new MainViewModel();
this.DataContext = viewmodel;
// fix for binding bug:
viewmodel.PropertyChanged += viewmodel_PropertyChanged;
}
void viewmodel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "LoginVisible")
loginWindowControl.Visibility = viewmodel.LoginVisible;
}
尝试,但仍然绑定不起作用,它只隐藏了当我通过代码隐藏设置属性 – 2009-08-31 07:02:02
谨慎分享如何设置绑定(您的XAML的一个子集)? – 2009-08-31 07:35:15