내 실버 라이트 응용 프로그램의 단순화 된 아키텍처를 통해 바인딩 :UserControl을 가시성은 뷰 모델
- MainPage; 나는이 두 가지 속성,
- 에서 MainPage.xaml에서 두 요소의 가시성 속성에 바인더 제본 UserControlVisible 및 RectVisible 입력 가시성을 모두 가지고, MainViewModel에 UserControl을하고 사각형
- : MainViewModel
- MainPage에 DataContext를 설정 두 가지 요소가 있습니다 MainViewModel는에서 INotifyPropertyChanged이
문제는 내가 Visibility.Collapsed에 MainViewModel에서 RectVisible 속성을 설정할 때, 사각형은 숨 깁니다, 괜찮있는,하지만 난 UserControl을 (UserControlVisible 속성)에 Visibility.Collapsed를 설정할 때, 그것은 숨 깁니다 적이있다을 구현했습니다!
해당 사용자 정의 컨트롤을 숨길 수 없으며 ViewModel 클래스를 통해이를 수행해야합니다. UserControl과 함께 Rectangle 요소와 함께 작동하는 이유는 무엇입니까? XAML에서 Visibility를 Collapsed로 수동 설정하면 숨김 상태가되지만 코드 및 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;
}
시도했지만 여전히 바인딩이 작동하지 않습니다. codebehind를 통해 속성을 설정할 때만 숨겨집니다. –
바인딩 (XAML의 하위 집합)을 설정하는 방법을 공유하도록 신경을 씁니까? –