首页 > 解决方案 > 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?

并提前感谢您!

标签: c#wpfdevexpress-wpf

解决方案


恐怕您不能重用相同的模板,而只能替换 XAML 中的绑定路径。

模板必须作为一个整体来定义。

您可以考虑使用XamlReader.Parse方法以编程方式创建模板,但没有标记(仅限 XAML)解决方案。

UsingXamlReader.Parse将让您使用一种方法string.Replace,例如替换每列的绑定路径。您仍然必须为每列创建一个模板,但它允许您在string变量或类似变量中定义模板的 XAML 标记。


推荐阅读