【解決方法】データバインドされたコンボボックスがクリアされない


かなり標準的な MVVM パターンに従う WPF アプリケーションがあります。 UI にはいくつかの要素が含まれています。 ComboBox リストにバインドするコントロール ユーザー オブジェクト、それぞれが 名前 財産。 の ComboBox.DisplayMemberPath に設定されています。 これまでのところすべて順調です。

場合によっては、 ComboBox ドロップダウン。 これを行うには、 List<User> ロジック層でヌルに。 これは、他の多くのものがクリアされると同時に発生するため、私は INotifyPropertyChanged プロパティ名に空の文字列を指定して、バインドされたすべての UI コントロールを更新します。 これは、例外を除いて機能するようです ComboBox コントロールします。 これらは最後に表示された名前を保持します。

を取得する方法はありますか ComboBox バインドされているリストがnullに設定されていることをUIで認識するか、別のアプローチを取る必要がありますか?

私が試したこと:

の設定 SelectedIndex UIで-1にするとこれは修正されますが、イベントなどをロジックに入れてUIをトリガーしてこれを行う必要があります。

解決策 1

サンプルコードを提供しない限り、何が起こっているのかわかりません。

通常、WPF でデータ バインディングを使用している場合は、実装済みです。 INotifyPropertyChangedINotifyCollectionChanged コレクション/リスト用。 ObservableCollection 両方を実装します:

C#
public class ObservableCollection<T> : Collection<T>, INotifyCollectionChanged, INotifyPropertyChanged

データ バインディングの要件に従っている場合は、バインディングの問題が発生する可能性があります。 Visual Studio の最新バージョンには、 XAML バインディングの失敗 窓:

Menu > Debug > Windows > XAML Binding Failures

3 つ目の可能性は、パブリック プロパティではなく、パブリック フィールドを使用していることです。 フィールドではなく、プロパティにのみデータ バインドできます。

それでも問題が解決しない場合は、質問を更新し、簡潔で的を絞った内容にしてください。

コメント

タイトルとURLをコピーしました