Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何避免在xaml中重复类似的标记?_Wpf_Xaml - Fatal编程技术网

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

Wpf 如何避免在xaml中重复类似的标记?,wpf,xaml,Wpf,Xaml,在我的xaml文件中,我有两个相同的数据网格,它们绑定到不同的集合,具有不同的名称和不同的Grid.Column属性。有没有一种方法可以不重复这些数据网格的标记,而是使用更简洁的标记?像编程语言中的宏替换? ... ... ... 使用相同的值,这通常会考虑大多数属性,如果属性不相同,通常就不需要再进一步了。有很多方法可以做到这一点,我认为没有一个正确的答案。 以下是我脑海中的一些想法: A) 您可以有一个datagrid“生成器”,就像一个函数一样,并通过代码动态加载datagrid B)

在我的xaml文件中,我有两个相同的数据网格,它们绑定到不同的集合,具有不同的名称和不同的Grid.Column属性。有没有一种方法可以不重复这些数据网格的标记,而是使用更简洁的标记?像编程语言中的宏替换?

...
...
...


使用相同的值,这通常会考虑大多数属性,如果属性不相同,通常就不需要再进一步了。

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

A) 您可以有一个datagrid“生成器”,就像一个函数一样,并通过代码动态加载datagrid

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

C) 在xaml中定义一个数据网格。然后,使用从第一个数据网格复制的属性,动态地向ContentControl、ItemsControl、StackPanel或其他对象添加其他数据网格


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

@akonsu:我可以,但不会。阅读我链接到和的文档。 <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>