Silverlight Checkbox 예상대로 작동하지 않는 두 가지 방법 바인딩
-
20-09-2019 - |
문제
Silverlight 3.0에서 확인란의 양방향 데이터 밴드를 설정하는 간단한 문제가 있습니다. 그것은 쉬운 일이 아니지만 아마도 나는 오늘 내 뇌의 집을 잊어 버렸을 것입니다 ...
내 .. '데이터'를 나타내는 모델 클래스를 정의했습니다. inotifyPropertyChanged 인터페이스를 구현하여 UI가 데이터가 변경되는시기를 확인할 수 있도록했습니다.
public class Model : INotifyPropertyChanged
{
private bool _value;
public bool Value
{
get { return this._value; }
set
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs("Value"));
this._value = value;
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
다음으로 '양식'에 확인란과 버튼을 넣습니다.
<StackPanel Orientation="Horizontal">
<CheckBox x:Name="check" IsChecked="{Binding Value, Mode=TwoWay}" Content="SomeLabel"/>
<Button Click="Button_Click" Content="Test" />
</StackPanel>
그런 다음 데이터를 생성자에 제공했습니다.
public MainPage()
{
InitializeComponent();
this.DataContext = new Model() { Value = true };
}
문제는 inotifyPropertyChanged를 구현하지 않는 한 확인/확인을 위해 확인란을 두 번 클릭해야한다는 것입니다. 그러나 구현되면 기본 데이터를 변경하는 경우 UI에 알 수 없습니다.
ISChecked Binding Expression에서 Mode = Twoway 비트를 제거하면 모델이 인터페이스를 구현하더라도 UI는 기본 데이터 변경을 알지 못합니다.
어떻게해야합니까 :
- 시동시 확인란을 데이터에 바인딩하십시오
- 기본 데이터를 수정하기 위해 CheckBox가 변경된 변경 사항을 확인하십시오.
- 체크 박스가 기본 데이터 변경을 감지하고 자체적으로 업데이트합니까?
해결책
설정 속성 절차에 시퀀싱 오류가 발생하여 할당해야합니다. _value
~ 전에 변경 알림 :-
set
{
this._value = value;
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs("Value"));
}
제휴하지 않습니다 StackOverflow