防止矩形样式应用于DataGrid

时间:2016-06-01 07:16:51

标签: c# wpf xaml datagrid

我的style中设置了app.config,我想在我的程序中使用rectangle颜色。它很好很简单,看起来像这样;

<Style TargetType="Rectangle">
    <Setter Property="Fill" Value="LightBlue"/>
</Style>

我注意到最近我的所有DataGrids都有一些奇怪的行为,当用户使用箭头键浏览rows时,单元格内的文字会被清空,看起来像这样;

BEFORE

enter image description here

ARROWKEYS ATESSED

enter image description here

正如你所看到的那样,文字显然已经消失了(这两个图像中的细胞都是相同的)。我终于看到了这一点并得出结论:rectangle样式适用于每个DataGridCell。我只能假设这是因为wpfrecangles中使用了DataGridCell

我是否可以将此样式仅应用于我从工具箱中取出的rectangles而不是rectangles中的文字DataGrid

除此之外的一个简单选择是完全删除style并单独应用它,但如果我们更改颜色方案,这可能会非常耗时。

已更新

我也(如果可能的话)喜欢使用任何修复同时修改我喜欢的DataGridCell外观;

<Style TargetType="DataGridCell">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="Orange" />
            <Setter Property="BorderBrush" Value="Black" />
        </Trigger>
    </Style.Triggers>
</Style>

1 个答案:

答案 0 :(得分:2)

DataGridCells使用在其可视化树中具有Rectangle的FocusVisualStyle。这些矩形从默认的Rectangle样式中获取Fill画笔。如果您更改FocusVisualStyle,则在键盘选择

上会显示单元格
<DataGrid.CellStyle>
    <Style TargetType="{x:Type DataGridCell}">
        <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
    </Style>
</DataGrid.CellStyle>

如果已经有DataGridCell的默认样式,请在那里添加一个setter

<Style TargetType="DataGridCell">
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="Orange" />
            <Setter Property="BorderBrush" Value="Red" />
        </Trigger>
    </Style.Triggers>
</Style>

<小时/> 其他信息:我对Buttons存在同样的问题,并使用Tab

进行选择