私のSilverlightアプリの簡素化アーキテクチャにより、結合:ユーザーコントロールの可視性のViewModel
- メインページ。私は2つのプロパティ、
- MainPage.xamlをでこれらの二つの要素の可視性プロパティにバインドさUserControlVisibleとRectVisible、タイプ可視性の両方を有する、MainViewModelにユーザーコントロールと長方形
- :MainViewModel
- メインページへのDataContextセットは2つの要素を有していますMainViewModelがINotifyPropertyChangedのは問題がある
を実施している私はVisibility.CollapsedにMainViewModelでRectVisibleプロパティを設定すると、長方形は罰金である、非表示になりますが、私は、ユーザーコントロール(UserControlVisibleプロパティ)にVisibility.Collapsedを設定すると、それが非表示になりません!
私はそのユーザーコントロールを隠すことができず、私はViewModelクラスを通してそれを行う必要があります。なぜRectangle要素では動作しますが、UserControlでは動作しませんか? XAMLでVisibilityをCollapsedに手動で設定すると、非表示になりますが、コードとViewModelオブジェクトで行う必要があります。
(編集)一時sollution:
私は手動であなたはおそらく、あなたのユーザーコントロールののルートにVisibilityプロパティをバインドする方法を見つける必要がある分離コード
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;
}
が試行されましたが、まだバインディングが機能しません。コードビハインドを通じてプロパティを設定したときにのみ非表示になります。 –
バインディング(XAMLのサブセット)のセットアップ方法を共有してください。 –