c# - WPF - 如何为 DataTemplate 进行通用绑定?
问题描述
我试图在互联网上搜索解决我的问题的想法,但我没有得到任何想法。
我有这些数据模板:
<DataTemplate x:Key="UnitGridCell">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<dxe:TextEdit EditValue="{Binding Row.Unit.NewValue}" Style="{StaticResource PartStyle}" />
<dxe:TextEdit EditValue="{Binding Row.Unit.OldValue}" Style="{StaticResource PartStyle}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="PreGridCell">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<dxe:TextEdit EditValue="{Binding Row.Pre.NewValue}" Style="{StaticResource PartStyle}" />
<dxe:TextEdit EditValue="{Binding Row.Pre.OldValue}" Style="{StaticResource PartStyle}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="ExecutionGridCell">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<dxe:TextEdit EditValue="{Binding Row.Execution.NewValue}" Style="{StaticResource PartStyle}" />
<dxe:TextEdit EditValue="{Binding Row.Execution.OldValue}" Style="{StaticResource PartStyle}" />
</StackPanel>
</DataTemplate>
对于这些 GridColumns:
<Grid >
<dxg:GridControl ItemsSource="{Binding DataGridModels}" >
<dxg:GridColumn x:Name="UnitCol" FieldName="Unit" CellTemplate="{StaticResource UnitGridCell}"/>
<dxg:GridColumn x:Name="PreCol" FieldName="Pre" CellTemplate="{StaticResource PreGridCell}"/>
<dxg:GridColumn x:Name="ExCCol" FieldName="Execution" CellTemplate="{StaticResource ExecutionGridCell}"/>
问题是:如何进行通用绑定,以便为所有网格列创建一个 DataTemplate?
并提前感谢您!
解决方案
恐怕您不能重用相同的模板,而只能替换 XAML 中的绑定路径。
模板必须作为一个整体来定义。
您可以考虑使用XamlReader.Parse方法以编程方式创建模板,但没有标记(仅限 XAML)解决方案。
UsingXamlReader.Parse
将让您使用一种方法string.Replace
,例如替换每列的绑定路径。您仍然必须为每列创建一个模板,但它允许您在string
变量或类似变量中定义模板的 XAML 标记。
推荐阅读
- android - 手动 apk 签名 (jarsigner) 与自动 apk 签名 (android studio) - 结果是不同的 APK
- angular - 一旦从另一个组件获取数据后如何重新加载组件,即使它已经以角度加载
- python - 如何成对打印数字...?
- html - 需要帮助从网页中抓取特定的 span 标签
- python - 从谷歌搜索中抓取链接,然后抓取这些链接以使用 Scrapy 将正文/文本内容提取到文件中
- networking - traceroute 如何从目的地接收动作?
- ubuntu - 使用 TPM 测量的每个哈希的文件路径
- interpolation - 如何根据正态分布的已知百分位数计算值的 z 分数
- azure - 如何连接到 Azure Synapse?
- shader - HLSL:如何将 unsigned int RGBA 转换为 float4?