2

谁能帮忙,浪费了很多时间试图解决这个问题。

我有一个具有以下属性的 ViewModel

    public ObservableCollection<ListItem> OpcoList { get; set; }
    public ListItem SelectedOpco {
        get {
            return _selectedOpco;
        }
        set {
            if (_selectedOpco != null && _selectedOpco.Equals(value)) {
                return;
            }
            var oldValue = _selectedOpco;
            _selectedOpco = value;

            RaisePropertyChanged("SelectedOpco");  
    }

在我的 XAML 中,我有

    <ListBox Name="listOpco" ItemsSource="{Binding OpcoList}" 
   SelectionMode="Single" SelectedItem="{Binding Mode=TwoWay, Path=SelectedOpco}">

但是,每当我在 VM 中为 SelectedOpco 设置一些值时,它就不会在 ListBox 中显示为选中状态。

有任何想法吗?提前致谢!

4

1 回答 1

0

你可以尝试一些事情:

  1. 将设置器简化为更简单的东西(它应该做你期望的 - 检查是否选择了列表的不同元素)。

    set {
        if(_selectedOpco != value) {
            _selectedOpco = value;
            RaisePropertyChanged("SelectedOpco");
        }
    }
    
  2. RaisePropertyChanged("SelectedOpco");在该行放置一个断点以查看执行是否在那里。如果是,请检查该类是否真的被标记为INotifyPropertyChanged.

    if(!(this is INotifyPropertyChanged))
         throw new Exception("Not INotifyPropertyChanged");
    
  3. 尝试使用以下方法设置值:

    SelectedOpco = OpcoList.FirstOrDefault(); // LastOrDefault
    

祝你好运!

于 2012-08-11T02:01:51.793 回答