2009-03-10 28 views
0

ComboBoxをオブジェクトのデータにバインドしようとしています。オブジェクトには、許可された状態であるリストと、現在の値を表す文字列が格納されます。私が抱えている問題は、フォームが正しくロードされるとコンボボックスの値が現在の値に設定されますが、他の値に変更することができないということです。ドロップダウンをクリックして新しい値を選択すると、ドロップダウンは閉じられますが、元の値は保持されます。WPF ComboBox Binding変更不可

コンボボックスはそれぞれDataGridの行内にあり、ComboBoxはDataGridのRowDetailsTemplateに含まれています。

XAML:

<ComboBox 
    x:Name="cmbStatus" 
    ItemsSource="{Binding Path=AllowedStateValues}" 
    SelectedItem="{Binding Path=State}"  
    Height="20" 
    Width="100" /> 

答えて

0

状態decleration:

private string _state; 
    public string State { 
     get { return _state; } 
     set 
     { 
      if (AllowedStateValues != null && AllowedStateValues.Contains(value)) 
      { 
       _state = value; 

      } 
     } 

    } 

私はそれが変更されたときにイベントが発生している必要はありませんが、それはまた、あなたがコンボボックスを変更するとセッターを呼び出していないように見えます

1

モード~TwoWay。それでも問題が解決しない場合は、PresentationTraceSources.TraceLevelプロパティをに設定してください。詳細はを参照してください。

+0

私はMode = TwoWayを試しましたが、変更はありません。私はPresentationTraceSources.TraceLevel = "High"が何を達成しているのかは分かりません。 – Stephan

+0

バインドセットに関する重要な情報をすべてトレースします。問題の原因のヒントがあるかもしれません。 – orcun

0

私はちょうど同じ問題を抱えていました。私の問題は、結ばれているアイテムのEqualsオーバーライドにあったことが分かります。等しくない複数のオブジェクトが等しいと比較されていないことを確認し、確認します。