我想我有一个简单的问题。基本上我有一个WPF应用程序,我经常使用DataGrid控件。每次我都以相同的方式设置样式(只是数据、行数和列数不同)。所以我想创建自己的控件DataGridMatrix来满足我的需求。
我为它写的代码如下:
<UserControl x:Class="StateMachines.UI.Controls.DataGridMatrix"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<DataGrid Width="450"
RenderTransformOrigin="0.657,1.249"
ItemsSource="{Binding Path=Logic.DefaultView}" ColumnWidth="*"
CanUserReorderColumns="False"
CanUserResizeColumns="False" CanUserAddRows="False" CanUserSortColumns="False"
CanUserResizeRows="False" Grid.ColumnSpan="1">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}"
BasedOn="{StaticResource MetroDataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.RowHeaderStyle>
<Style TargetType="{x:Type DataGridRowHeader}"
BasedOn="{StaticResource MetroDataGridRowHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
</DataGrid.RowHeaderStyle>
如您所见,我只对其进行样式设置,没有在其中放入任何数据(在 XAML 中)。问题是我当然可以把这个控件放在我MainWindow.xaml这样的地方:
<controls:DataGridMatrix x:Name="DataGridTransition"/>
但是,如果我想要 fe 改变位置(在网格中,fe 我希望它Grid.ColumnSpan="2"代替Grid.ColumnSpan="1") I can't do that, cuz theDataGrid is in my control, and my control isn't derived fromDataGrid` 本身(我想,如果它是派生的,那么我可以这样做,就像在普通类中一样,对吧? )。
所以最后我的问题是:有没有办法从XAML我自己的标准控件中继承UserControl并设置不同的样式(就像这里,在我的代码中我会省略<DataGrid>标签,我会将它的参数放在<UserControl>标签中+其他类似的东西DataGrid.ColumnHeaderStyle将被放置在<UserControl>) 的正下方?
相关分类