所以我得到了以下ComboBox,其SelectedValue绑定到下面的Property。使用以下绑定,当我设置值时,绑定/ RaisePropertyChanged组合会抛出StackOverflow异常。
这是ComboBox
<ComboBox x:Name="WireType" ItemsSource="{x:Bind ViewModel.WireTypes}" SelectedValue="{x:Bind ViewModel.WireType, Mode=TwoWay}"/>
这是属性
public string WireType
{
get
{
return _wireType;
}
set
{
_wireType = value;
RaisePropertyChanged();
}
}
这是RaisePropertyChanged方法。
private void RaisePropertyChanged([CallerMemberName] string caller = "")
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(caller));
}
}
我很确定我以前做过这件事。我错过了什么?
答案 0 :(得分:4)
我的精神力量表明PropertyChanged
事件试图设置属性值。
设定者应该防止价值没有变化的情况。即 -
set
{
if (_wireType != value) // or the appropriate comparison for your specific case
{
_wireType = value;
RaisePropertyChanged();
}
}
当然,堆栈跟踪会确认实际发生了什么。
答案 1 :(得分:-1)
试试这个
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged([CallerMemberName] string caller = "")
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(caller));
}