因此,我将下面的ComboBox与SelectedValue绑定到下面的Property。使用以下绑定,当我设置值时,binding / RaisePropertyChanged组合将引发StackOverflow异常。

这是组合框

<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));
    }
}


我敢肯定我以前做过。我想念什么?

最佳答案

我的灵力建议PropertyChanged事件正在尝试设置属性值。

设置器应防止值保持不变的情况。即

set
{
    if (_wireType != value) // or the appropriate comparison for your specific case
    {
        _wireType = value;
        RaisePropertyChanged();
    }
}


当然,堆栈跟踪将确认实际发生的情况。

07-26 08:39