带有 DataGrid 的 WPF UserControl,在 XAML 中添加额外的列

WPF UserControl with DataGrid, adding extra columns in XAML

我正在尝试尽可能多地重复使用我正在编写的 XAML。

现在,我想在 DataGrids 中显示我的对象。我的对象通过继承共享一些共同的属性。因此,我想创建一个带有网格的 UserControl,并为每个对象共有的属性定义一些列。所以看起来像这样:

<UserControl Name="MyCustomGrid">
    <Grid>
        <DataGrid>
            <!-- Common Settings -->
                ...
            <!-- /Common Settings -->
            <DataGrid.Columns>
                <ADataGridColumn Name="CommonProperty1"/>   
                <ADataGridColumn Name="CommonProperty2"/>
                ...
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</UserControl>

然后我希望能够使用此 UserControl 并为我要显示的对象的特定属性添加 extra 列,through XAML 像这样:

<view:myCustomGrid>
   <view:myCustomGrid.Columns>
       <ADataGridColumn Name="SpecificProperty1"/>
       <ADataGridColumn Name="SpecificProperty2"/>
       ...
   </view:myCustomGrid.Columns>
</view:myCustomGrid>

这可能吗?我查看了 this 问题,但似乎无法在 DataGrid.Columns

下插入 ContentControl

也许这不是要走的路...

感谢您的帮助

您可以像这样定义列;包括不同类型

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn/>
        <DataGridCheckBoxColumn/>
        <DataGridComboBoxColumn/>
        <DataGridHyperlinkColumn/>
        <DataGridTextColumn/>
    </DataGrid.Columns>
</DataGrid>

当您设置 AutoGenerateColumns="True"(默认设置)时,您也将从绑定属性中获取列。如果您只想查看指定的列,则必须设置 AutoGenerateColumns="False".

DataGridTemplateColumn 用于用户特定的列。所以你可以把你想要的任何东西都放进去。

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <!--Content-->
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <!--Content-->
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

但是为什么要将其封装在 UserControl 中而不是对 DataGrid 实例本身进行封装?我建议为每个 DataGrid 指定列,因为将其放入 UserControl 中需要大量工作。或者当每个 DataGrid.

有一些相同的东西时使用样式