【问题标题】:how to avoid repeating similar markup in xaml?如何避免在 xaml 中重复类似的标记?
【发布时间】:2012-04-30 04:06:31
【问题描述】:

在我的 xaml 文件中,我有两个相同的 DataGrid,它们绑定到不同的集合,并且具有不同的名称和不同的 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>

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    Styles 用于相同的值,这通常会处理大多数属性,如果属性不相同,通常无需进一步处理。

    【讨论】:

    • @akonsu:我可以但不会。阅读我链接到的文档和this
    【解决方案2】:

    有很多方法可以做到这一点,我认为没有一个正确的答案。 这只是我的一些想法:

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

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

    C) 在您的 xaml 中定义一个数据网格。然后将其他数据网格动态添加到 ContentControl、ItemsControl、StackPanel 或其他任何东西,并使用从第一个数据网格复制的属性。

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

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      相关资源
      最近更新 更多