データテーブル オブジェクトの値を表示する DataGrid があります。
データテーブルの各行を 1 行表示する必要がありますが、DataTable の列 ShowRow が False に設定されている場合、最初の 2 列以外は何も表示しない必要があります。現在、テーブルのコピーにバインドすることでこれを達成しており、そのコピーでは、必要に応じて手動で値を空に設定しています。
バインディングを介してこれを行うよりエレガントな方法はありますか?
データテーブル オブジェクトの値を表示する DataGrid があります。
データテーブルの各行を 1 行表示する必要がありますが、DataTable の列 ShowRow が False に設定されている場合、最初の 2 列以外は何も表示しない必要があります。現在、テーブルのコピーにバインドすることでこれを達成しており、そのコピーでは、必要に応じて手動で値を空に設定しています。
バインディングを介してこれを行うよりエレガントな方法はありますか?
はい、データ トリガーを介して実行できます。
例:
標本、見本:
<Style x:Key="MyCellStyle" TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<!-- Hide text if MyProperty is "True" -->
<DataTrigger Binding="{Binding Path=MyProperty, Mode=OneWay}" Value="True">
<Setter Property="Foreground" Value="Transparent" />
</DataTrigger>
</Style.Triggers>
</Style>
もちろん、テキストを非表示にする他のオプションもあります。モデル自体を操作しないことを強くお勧めします。それが望ましい動作であるため、代わりにコンテンツの可視性に影響を与えます。