6

これは最初の状況です:

XAML:

<ComboBox Grid.Row="0"
           Grid.Column="1"
           Margin="0,3"
           HorizontalAlignment="Stretch"
           DisplayMemberPath="DisplayText"
           ItemsSource="{Binding ObjectSource}" />

ビューモデル:

public Collection<MyObjects> ObjectSource
{
    get
    {
        return this.objectSource;
    }

    set
    {
        this.SetProperty(ref this.objectSource, value);
    }
}

My Objects には、名前 (文字列)、有効な日付 (dateTime)、および表示用に名前と有効な日付を組み合わせた displayText (文字列のみ取得) が含まれています。

この簡単な状況では、コンボボックスを開いてすべてのエントリを表示できます.1つを選択すると、コンボボックス内に正しい表示テキストも表示されます. ここで、ドロップダウン エリアを再度開き、別のエントリを選択します。その結果、選択したアイテムが切り替わります (ドロップダウン エントリを再度開くと、強調表示されたアイテムが表示されます)。ただし、コンボボックス内に表示されるアイテムは変更されず、最初の選択の DisplayText が残っています。

結果状況のスクリーンショット

コンボボックスが更新されない理由を知っている人はいますか? 前もって感謝します

編集:彼らの助けに感謝します。問題は、Equals のオーバーライドのバグでした。

4

1 に答える 1

2

完全を期すためだけに:)

Equals() オーバーライドをチェックして、バグがないことを確認する必要があります。最近、リストボックスで同じ問題が発生しました。

于 2013-07-17T07:15:24.417 に答える