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 に答える