如何避免在xaml中重复类似的标记?

时间:2012-04-30 04:06:31

标签: wpf xaml

在我的xaml文件中,我有两个相同的DataGrids,它们绑定到不同的集合,并且具有不同的名称和不同的Grid.Column属性。有没有办法不重复这些数据网格的标记,但有一些更简洁的东西?就像编程语言中的宏替换一样?

      <DataGrid AutoGenerateColumns="False"
                CanUserAddRows="False"
                ItemsSource="{Binding View0}"
                Name="DataGrid0"
                SelectedItem="{Binding SelectedTask}"
                SelectionMode="Single"
                Grid.Column="0"
                views:DataGridProperties.RowEditEndingCommand="{Binding UpdateTaskCommand}">
      ...
      </DataGrid>
      ...
      <DataGrid AutoGenerateColumns="False"
                CanUserAddRows="False"
                ItemsSource="{Binding View1}"
                Name="DataGrid1"
                SelectedItem="{Binding SelectedTask}"
                SelectionMode="Single"
                Grid.Column="1"
                views:DataGridProperties.RowEditEndingCommand="{Binding UpdateTaskCommand}">
      ...
      </DataGrid>

2 个答案:

答案 0 :(得分:1)

使用Styles表示相同的值,通常会处理大多数属性,如果属性不相同,则通常不需要再进行任何操作。

答案 1 :(得分:0)

有很多方法可以做到这一点,我认为没有一个正确的答案。 这只是我头脑中的一小部分:

A)你可以拥有一个数据网格“生成器”,就像一个函数一样,并通过代码动态加载你的数据网格。

B)你可以通过xaml动态加载你的数据网格(加载xaml标记)。

C)在xaml中定义了一个数据网格。然后动态地将其他数据网格添加到ContentControl,ItemsControl,StackPanel或其他任何内容,并从第一个数据网格中复制这些属性。

D)您可以创建一个UserControl来定义您的datagrid(即Custom DataGrid控件)。然后,您只需通过Xaml或代码添加此数据网格。