WPF ListBox SelectedItem问题

时间:2012-08-02 10:54:39

标签: wpf mvvm listbox

任何人都可以提供帮助,失去了很多时间试图解决这个问题。

我有一个具有以下属性的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中显示为选中。

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

你可以尝试一些事情:

  1. 将setter简化为更简单的东西(它应该按照您的意图执行 - 检查是否选择了列表的其他元素)。

    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
    
  4. 祝你好运!