我想通过添加带圆角的数据网格来增加我的WPF GUI。 我发现一篇文章很好地描述了当你将它直接应用到一个特定的数据网格时它是如何完成的。它的工作原理如下:
<Border CornerRadius="10" Grid.Row="1" Margin="10" BorderBrush="Gray" BorderThickness="1" >
<Border.BitmapEffect>
<DropShadowBitmapEffect></DropShadowBitmapEffect>
</Border.BitmapEffect>
<Grid>
<Border x:Name="BDRounded" BorderThickness="1" BorderBrush="Gray" Background="White" CornerRadius="10"></Border>
<DataGrid x:Name="AKGrid" Width="Auto" ItemsSource="{Binding List}" AutoGenerateColumns="True" IsReadOnly="True" >
<DataGrid.OpacityMask>
<VisualBrush Visual="{Binding ElementName=BDRounded}"></VisualBrush>
</DataGrid.OpacityMask>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="50" Binding="{Binding intID}"></DataGridTextColumn>
<DataGridTextColumn Header="Description" Width="250" Binding="{Binding txtDescription}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Border>
我现在想将其封装到样式或自定义控件中。我的问题是: 在这种情况下,最好的方法是什么? CustomControl,UserControl,Style还是别的什么?那我该怎么做呢? 重要的是我有一个可重复使用的CustomDataGrid,它看起来像上面那个,我可以用任何旧的数据网格设置XAML中的所有Headers和Bindings。 帮助将不胜感激。
答案 0 :(得分:0)
更改WPF控件的默认外观的正确方法是为相关控件提供新的ControlTemplate
。为控件提供新ControlTemplate
的最佳方法是从默认控件开始......对于DataGrid
控件,您可以在{{3}中找到默认ControlTemplate
MSDN上的页面。
如果您不确定如何使用非默认ControlTemplate
,可以在MSDN上的DataGrid Styles and Templates页面上找到更多信息,但简而言之,您可以在某些内容中定义ControlTemplate
Resources
部分,然后将其设置为控件Template
属性的值。您还可以在MSDN上的ControlTemplate
Class页面中找到更多有用的信息。
在您的情况下,您周围的Border
和DropShadowBitmapEffect
应 新ControlTemplate
。
最后,如果您希望新的ControlTemplate
自动应用于应用中的每个DataGrid
,请执行不设置x:Key
指令ControlTemplate
中的Resources
。否则,在x:Key
上设置ControlTemplate
指令,然后将该值设置为您要查看的DataGrid.Template
的{{1}}属性。