2 개의 "텍스트 상자"가 모두 "mode = 2way"인 소스 문자열 속성에 바인딩되었습니다. 하나의 텍스트를 변경하면 다른 하나는 완벽하게 변경됩니다. 하지만 소스 문자열을 프로그래밍 방식으로 변경하면 둘 다 업데이트되지 않습니다. 나는 실종 된 것을 파악할 수 없다.소스가 프로그래밍 방식으로 변경되었을 때 바운드 대상 컨트롤이 업데이트되지 않음
XAML 코드 :
<StackPanel Orientation="Vertical">
<StackPanel.DataContext>
<local:x/>
</StackPanel.DataContext>
<TextBox Text="{Binding Text,Mode=TwoWay}" />
<TextBox Text="{Binding Text, Mode=TwoWay}"/>
</StackPanel>
<Button Content="Reset" Click="Button_Click"/>
버튼을 클릭 핸들러 :
private void Button_Click(object sender, RoutedEventArgs e)
{
obj = new x() { Text="reset success"};
}
개체 클래스 : 수단 위
class x:INotifyPropertyChanged
{
private string text;
public string Text
{
get { return text; }
set
{
text = value;
OnPropertyChange("Text");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChange(string propertyName)
{
PropertyChangedEventHandler propertyChangedEvent = PropertyChanged;
if (propertyChangedEvent != null)
{
propertyChangedEvent(this, new PropertyChangedEventArgs(propertyName));
}
}
}
코드에서 스택 패널의 datacontext를 설정하여 해결 방법을 찾았습니다. – Sidney
답변을 확인하거나 도움을 더 요청하십시오 – Krekkon