0

データテーブル オブジェクトの値を表示する DataGrid があります。

データテーブルの各行を 1 行表示する必要がありますが、DataTable の列 ShowRow が False に設定されている場合、最初の 2 列以外は何も表示しない必要があります。現在、テーブルのコピーにバインドすることでこれを達成しており、そのコピーでは、必要に応じて手動で値を空に設定しています。

バインディングを介してこれを行うよりエレガントな方法はありますか?

4

2 に答える 2

0

はい、データ トリガーを介して実行できます。

例:

  • MyCellStyleというカスタムDataGridCellスタイルを作成します。
  • 行を表す特定のモデルに含まれるプロパティMyPropertyがTrueに設定されている場合は常に、ForeGround テキストは透明に設定されます。
  • 必要なのは、目的の動作を示したい任意のDataGridCellでこれを利用することだけです。

標本、見本:

<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>

もちろん、テキストを非表示にする他のオプションもあります。モデル自体を操作しないことを強くお勧めします。それが望ましい動作であるため、代わりにコンテンツの可視性に影響を与えます。

于 2013-05-17T20:14:47.450 に答える