gpt4 book ai didi

c# - 资源中的 WPF DataTemplate,绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 19:55:15 25 4
gpt4 key购买 nike

我有下面的 DataGrid(简化)

<DataGrid ItemsSource="{Binding Something}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Test">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<Grid>
<TextBox Text="{Binding A}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding A}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Test">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<Grid>
<TextBox Text="{Binding B}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding B}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</Datagrid>

有没有什么方法可以将 DataTemplate 移动到资源并将其重新用于不同的属性,这样我就不必为每个属性复制和粘贴 DataTemplate?

最佳答案

实用的解决方案是在资源级别定义模板,并将它们包装在每一列的“ContentPresenter”中。您仍然必须明确地为每一列定义一个模板。尽管如此,您仍然可以在一个地方管理模板并快速查看您的列绑定(bind)到哪些属性。

<DataGrid>
<!-- Templates in a single place in resources -->
<DataGrid.Resources>
<DataTemplate x:Key="CellTemplate">
<TextBlock Text="{Binding}" />
</DataTemplate>
<DataTemplate x:Key="EditCellTemplate">
<TextBlock Text="{Binding}" />
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding A}" ContentTemplate="{StaticResource CellTemplate}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding A}" ContentTemplate="{StaticResource EditCellTemplate}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding B}" ContentTemplate="{StaticResource CellTemplate}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding B}" ContentTemplate="{StaticResource EditCellTemplate}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

关于c# - 资源中的 WPF DataTemplate,绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com