样式或资源中的WPF DataGrid列

| 是否可以用样式或资源声明“ 0”列? 我想做这样的事情:
<....Resources>
    <DataGridColumns x:Key=\"dgcDataGridColumns\">
        <DataGridTextColumn />
        <DataGridTextColumn />
    </DataGridColumns
</....Resources>

<DataGrid Columns=\"{StaticResource dgcDataGridColumns}\" />
原因是我必须为4个不同的
DataGrids
共享列定义。有什么办法可以做到这一点?最好没有代码!
已邀请:
DataGrid的Columns属性没有设置器,因此没有可能。但是,您可以执行以下操作:
<Window.Resources>

    <Controls:DataGrid x:Key=\"PersonDataGrid\" AutoGenerateColumns=\"False\" ItemsSource=\"{Binding .}\" x:Shared=\"False\">
        <Controls:DataGrid.Columns>
            <Controls:DataGridTextColumn Header=\"First Name\" Binding=\"{Binding Path=FirstName}\" IsReadOnly=\"True\"/>
            <Controls:DataGridTextColumn Header=\"Last Name\" Binding=\"{Binding Path=LastName}\" IsReadOnly=\"True\"/>
        </Controls:DataGrid.Columns>
    </Controls:DataGrid>

</Window.Resources>

<StackPanel>
    <ContentControl Content=\"{StaticResource PersonDataGrid}\" DataContext=\"{Binding Path=Customers}\"></ContentControl>
    <ContentControl Content=\"{StaticResource PersonDataGrid}\" DataContext=\"{Binding Path=Employees}\"></ContentControl>
</StackPanel>
x:共享有助于避免MattS423出现异常。
<Window.Resources>
    <DataGridTextColumn x:Key=\"dgtcFirstName\" x:Shared=\"False\" Header=\"First Name\" Binding=\"{Binding FirstName}\"/>
    <DataGridTextColumn x:Key=\"dgtcSecondName\" x:Shared=\"False\" Header=\"Second Name\" Binding=\"{Binding SecondName}\"/>
</Window.Resources>

<Grid>
    <StackPanel>
        <DataGrid AutoGenerateColumns=\"False\" Height=\"200\" Name=\"dataGrid1\" Width=\"200\">
            <DataGrid.Columns>
                <StaticResource ResourceKey=\"dgtcFirstName\"/>
                <StaticResource ResourceKey=\"dgtcSecondName\"/>
            </DataGrid.Columns>
        </DataGrid>
        <DataGrid AutoGenerateColumns=\"False\" Height=\"200\" Name=\"dataGrid2\" Width=\"200\">
            <DataGrid.Columns>
                <StaticResource ResourceKey=\"dgtcSecondName\"/>
                <StaticResource ResourceKey=\"dgtcFirstName\"/>
            </DataGrid.Columns>
        </DataGrid>
    </StackPanel>
</Grid>
我不认为可以,因为在这种情况下,您不是在指定模板或样式,而是指定实际的Column对象。我认为这样共享时数据网格不能很好地发挥作用;我认为您会在以下范围内遇到例外情况:“此UIElement已经是另一个UIElement的孩子”。 因此,我尝试了以下操作……与您所说的略有不同。但是我有这个例外: {\“带有标题\'\'的DataGridColumn已存在于DataGrid的Columns集合中。DataGrid无法共享列,并且不能包含重复的列实例。\\ r \\ n参数名称:item \”} 使用此XAML:
         <Grid.Resources>
            <DataGridTextColumn x:Key=\"MyColumn\" />
        </Grid.Resources>
          <DataGrid>
            <DataGrid.Columns>
                <StaticResource ResourceKey=\"MyColumn\" />
            </DataGrid.Columns>
        </DataGrid>

        <DataGrid>
            <DataGrid.Columns>
                <StaticResource ResourceKey=\"MyColumn\" />
            </DataGrid.Columns>
        </DataGrid>

要回复问题请先登录注册