wpf 컨트롤에 바인딩 된 INotifyProperty Screen 항목이 있습니다.WPF Inner 속성 Binding이 업데이트되지 않습니다.
좋아요 ... 나는 모든 것을 단순화하고 더 많은 코드를 게시하고 있습니다. 선택한 스크린 프로퍼티를 가진 MainViewModel이 있습니다.
<TextBlock Text="{Binding Path=SelectedScreen.ScreenNumber}" />
이 모두가 처음 작동합니다
public Screen SelectedScreen
{
get { return this.selectedScreen; }
set
{
this.selectedScreen = value;
this.OnPropertyChanged("SelectedScreen");
}
}
나는이 속성에 바인딩 된 텍스트 상자가 있습니다. 다음 코드를 사용하여 선택한 화면을 변경하는 다른 컨트롤을 만들었습니다.
public Screen SelectedScreen
{
get { return (Screen)GetValue(SelectedScreenProperty); }
set
{
this.SetValue(SelectedScreenProperty, value);
for (int x = 0; x < this.Screens.Count; ++x)
this.Screens[x].IsSelected = false;
value.IsSelected = true;
}
}
public ObservableCollection<Screen> Screens
{
get { return (ObservableCollection<Screen>)GetValue(ScreensProperty); }
set { this.SetValue(ScreensProperty, value); }
}
public static readonly DependencyProperty SelectedScreenProperty =
DependencyProperty.Register("SelectedScreen",
typeof(Screen),
typeof(ScreenSelection));
public static readonly DependencyProperty ScreensProperty =
DependencyProperty.Register("Screens",
typeof(ObservableCollection<Screen>),
typeof(ScreenSelection),
new UIPropertyMetadata(new ObservableCollection<Screen>()));
이 화면 선택 컨트롤이 작동합니다. SelectedScreen의 set 속성에 스크린을 변경하고 중단 점을 넣으면 MainViewModel의 SelectedScreen 속성을 호출하는 호출됩니다. 따라서 이벤트가 발생하지만 텍스트 상자가 처음 올바르게 바인딩 되더라도 업데이트되지 않습니다.
Screen 클래스에는 INotifyPropertyChanged가 포함되어 있습니다. 따라서 포함하는 클래스는 datacontext에 바인딩됩니다. SelectedScreen을 바꿀 때 INotifyPropertyChanged가 호출됩니다. –
클래스를 포함하는 코드가 있습니까? 'Screen' 클래스는 중요하지 않습니다. 여러분이 지적한대로'VisualizationTypes'가 아니라'SelectedScreen' 속성이 변경되었습니다. 그래서, 당신은 포함하는 클래스, 특히'SelectedScreen' 속성의 코드를 게시 할 수 있습니까?! – gehho
코드가 무엇인지 볼 수 있도록 코드를 업데이트했습니다. –