我试图完成的是自定义DataGrid
控件,使每行都有圆角,没有网格线(只是我正在使用的设计)。
我一直试图做的是创建一个ControlTemplate
,修改DataGridRow
控件,使其具有预期的外观。到目前为止,这就是我正在研究的:
<DataGrid Grid.Row="0" Grid.Column="0" Margin="5,5,5,5" AutoGenerateColumns="False" ItemsSource="{Binding Path=MyData}">
<DataGrid.Resources>
<Style x:Key="rowStyle" TargetType="{x:Type DataGridRow}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRow}">
<Border CornerRadius="8,8,8,8" BorderBrush="Red" BorderThickness="2">
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Foo" />
<DataGridTextColumn Header="Baz" />
<DataGridTextColumn Header="Bar" />
</DataGrid.Columns>
</DataGrid>
这个版本显然是基本的(只是一个围绕股票模板的边框),但当我运行应用程序时,我看不到任何区别。
那么,问题是如何为DataGridRow定制控件模板?或者,如果这是不可行的,有没有更好的方法来实现我的目标:
2条答案
按热度按时间57hvy0tb1#
该行的实际模板比这个要复杂一些。请看下面的样式--它几乎是基本的样式,但我添加了一些你的设计,并为
IsMouseOver
和IsSelected
留下了触发器(请随意删除它们)。哦,顺便说一句,你有一个样式的键,但是你没有在任何时候引用它--所以这行使用它的默认样式。要使用您的样式或上面提供的样式,请不要为资源给予键。
ryevplcw2#
并且样式可以参考如下