スタック パネルの一部のフィールドを空にできるアイテム テンプレートを作成しようとしています。空のときは、可視性を折りたたみに設定したいと思います。トリガーを入れてみましたが、うまくいかないようで、WPFのこの部分にあまり慣れていません
また、バインディングの特定の値が true の場合に、このアイテムの背景色を変更したいと考えています。それは同じことですか?
ありがとう。
スタック パネルの一部のフィールドを空にできるアイテム テンプレートを作成しようとしています。空のときは、可視性を折りたたみに設定したいと思います。トリガーを入れてみましたが、うまくいかないようで、WPFのこの部分にあまり慣れていません
また、バインディングの特定の値が true の場合に、このアイテムの背景色を変更したいと考えています。それは同じことですか?
ありがとう。
ViewModel を使用することは、この種の問題を解決する 1 つの方法です。
データが Item クラスに格納されている場合は、ItemViewModel を作成して、Items コントロールに表示するために Item をラップします。ViewModel クラスは、表示を更新するために変更された INotifyProperty を実装し、セッターは適切なプロパティ名を渡して PropertyChanged イベントを発生させます。必要に応じて、相互に関連する変更されたフィールドのプロパティ変更イベントを発生させることもできます。
Description が空のときに、折りたたまれたフィールドに Item.Description を表示したいとします。ViewModel プロパティは次のようになります
public string Description
{
get { return mItem.Description; }
set { mItem.Description = value; Notify("Description"); Notify("DescriptionVisibility"); }
}
public Visibility DescriptionVisibility
{
get { return string.IsNullOrEmpty(mItem.Description) ? Visibility.Visible : Visibility.Collapsed; }
}
XAML で、テキスト プロパティを Description にバインドし、Visibility プロパティを DescriptionVisibility にバインドします。
コンテンツが null の場合にアイテムを非表示にする場合はControlTemplate
、そのListBoxItem
(またはListViewItem
、使用しているアイテム コンテナーに応じて別のもの) を再定義し、次のDataContext
ように、をターゲットとするトリガーを使用する必要があります。
<DataTrigger Binding="{Binding}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
ただし、Filter
デリゲートを使用しCollectionView
て空のアイテムをビューから直接除外し、未使用のアイテムが折りたたまれないようにすることをお勧めします。
たとえば、コード ビハインドで null オブジェクトを除外するには、次を使用します。
CollectionViewSource.GetDefaultView(yourCollection).Filter = o => o != null;