6

複数のDataGridを含む がありますDataGridTemplateColumns。私の問題は、現在選択されている行がセルの前景の一部を白に変える、つまりテキストを白にすることです。 DataGridTemplateColumnsTextBlocks を含むものは正しく動作し、白にDataGridTemplateColumns変わりますが、TextBoxs を含むものは行が選択されても変化しません。

この問題を解決する理由または方法を知っている人はいますか?

私はこの解決策を試しましたしかし、影響を受けるのはTextBlocksだけです。何が間違っているのか誰にもわかりませんか?

4

1 に答える 1

5

TriggerがTextBox ForeGroundにも影響を与えない理由はよくわかりませんが、通常、セルが編集モードの場合は選択色をアクティブにするべきではないため、TextBoxが値を拒否する理由かもしれませんが、私はわからない。DataGridTextColumn を使用して編集モードに入ると、同じ効果が見られます。TextBox にはトリガーからの前景はありませんが、TextBlock にはあります。DataGrid で選択したすべての TextBoxes に White ForeGround を適用するには、これを行うことができます (これは、編集モードの TextBox にも影響することに注意してください)。

<DataGrid ...>
    <DataGrid.Resources>
        <Style x:Key="{x:Type DataGridCell}" TargetType="{x:Type DataGridCell}" >
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Foreground" Value="White"/>
                </Trigger>
            </Style.Triggers>
        </Style>
        <!-- Workaround for the TextBox -->
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridCell}}, Path=IsSelected}" Value="True">
                    <Setter Property="Foreground" Value="White"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.Resources>
    <!-- ... -->
</DataGrid>
于 2010-12-06T15:40:26.293 に答える