1

SO の WPF データグリッドについては多くの質問がありますが、私はそれらから必要なものを取得できないため、まだ質問する必要があります...お願いします :]。

ヒント:主な質問は、なぜトリガーが機能しないのかということです。:|

  1. 値のないセルの選択を無効にするデータグリッド プロパティはありますか? そんなものがあることは知っていたと思いますが、今は見つけられません。そのようなことがない場合、どうすればこの問題を解決できますか? selectedCellsChanged などのイベントについて考えていました。しかし、私はそれを解決する方法がわかりません。

  2. 内部の値に応じてセルの背景プロパティを設定するにはどうすればよいですか? DatagridCell ( http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridcell.aspx )の text/content/value プロパティを探していましたが、何もうまくいきませんでした...いくつかの値コンバーターですが、トリガーを使用してこれを解決することを考えていました。

いくつかの情報: SelectionMode="Extended"+を設定しSelectionUnit="Cell"ました。

トリガーを使用して背景を設定しようとしましたが、うまくいきませんでした:

<DataGrid.CellStyle>
    <Style TargetType="DataGridCell">
        <Style.Triggers>
            <Trigger Property="HasContent"  Value="False">
                <Setter Property="Background" Value="DarkGray"/>
            </Trigger>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="Red"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</DataGrid.CellStyle>

プロパティIsSelectedは正常に機能しますが、コンテンツのないものは機能しません。null「」または「コンテンツがない」と(間違って)考えているのは私だけですか?<Trigger Property="Content" Value="">とも試し<Trigger Property="Content" Value="null">ましたが、これらのことは私にとってはうまくいきません。私がどうかしましたか、まずいことでもありましたか???

編集:この Q/A を見つけました - WPF Toolkit Datagrid を使用してセルの背景色を変更するにはどうすればよいですか?また、トリガーが機能した場合、そのようなものがある場合は、セルをHasContent="False"選択できないように設定できます。しかし、トリガーを機能させる必要があるだけです:D

Edit2:を設定する<Trigger Property="HasContent" Value="True">と、すべてのセルで機能します..だから、値として null/"" を取ると思います。それは私に疑問を残します:

ヌルの特別な背景が必要で、その選択を無効にする場合、これをどのように解決すればよいですか?

Edit3:選択を無効にすると、次のように動作するはずです: WPF ListView<Setter Property="Focusable" Value="false"/>のおかげで、選択をオフにできます .. これは機能していません :D :'(

null、セルのコンテンツに関するトリガーを解決する必要があります...何かヒントはありますか?

4

2 に答える 2

1

私は単純なものを作成し、なぜreturn alwaysDataGridを見つけようとします。プロパティを確認すると、その中にあります。したがって、おそらくこれが常に真である理由です。HasContenttrueContentTextBlock

この問題を処理するTriggerには、コンバーターを使用するように変更できます。

<DataTrigger Binding="{Binding DataContext, RelativeSource={RelativeSource Self}, Converter={StaticResource CellConverter}}"  Value="False" >
     <Setter Property="Background" Value="Green"/>
</DataTrigger>

そして、コンバーターで、適切なプロパティが null の場合にチェックします。どのプロパティ コンバーターをチェックする必要があるかを知るには、 を使用できますConverterParameter

それはエレガントな解決策ではありません...しかし、うまくいきます;)

于 2013-05-19T19:04:06.180 に答える