Dan*_*şar 19 wpf resources datagrid
是否可以DataGrid在样式或资源中声明列?我想做这样的事情:
<....Resources>
<DataGridColumns x:Key="dgcDataGridColumns">
<DataGridTextColumn />
<DataGridTextColumn />
</DataGridColumns
</....Resources>
<DataGrid Columns="{StaticResource dgcDataGridColumns}" />
Run Code Online (Sandbox Code Playgroud)
原因是我必须分享4种不同的列定义DataGrids.有没有办法实现这个目标?最好的是没有代码背后!
小智 28
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>
Run Code Online (Sandbox Code Playgroud)
Wal*_*mer 21
DataGrid的Columns属性没有setter,因此不可能.但是你可以这样做:
<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>
Run Code Online (Sandbox Code Playgroud)
我认为您不能,因为在这种情况下您没有指定模板或样式,而是指定实际的 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18730 次 |
| 最近记录: |