2010-07-07 97 views
0

我会首先说我试图严格遵循MVVM,所以我只想使用Binding来完成以下操作。WPF共享DataGrid列设置(模板?样式?)

我有多个DataGrid显示相同数据类型的不同ObservableCollections。我怎样才能定义哪些列及其绑定路径将显示在所有DataGrid上?

它似乎不能为DataGrid.Column设置样式。目标是所有的DataGrid都显示相同的DataGrid.Column信息,但只需维护它的一个副本。

任何想法?

回答

1

将您的DataGrid定义为资源。

然后,您可以在“参考”的数据网格中的窗口或应用程序的多个领域是这样的:

<ContentControl Content="{StaticResource myDataGrid}"></ContentControl> 

您可以更改ContentControl中的DataContext的,这样的DataGrid中将会被绑定到不同的数据源。

+0

只是为了澄清,在上面的示例代码中,我假设DataGrid有一个'myDataGrid'键。 – ChrisNel52 2010-07-07 15:12:34

+0

如何设置DataGrid之间可能不同的参数,如HeadersVisibility? – bufferz 2010-07-07 18:04:31

+0

选项1:如果HeadersVisibility值由绑定属性确定,则将HeadersVisibility绑定到适当的属性,并使用ValueConverter将属性值转换为正确的HeadersVisiblity值。 选项2:创建一个UserControl,而不是将DataGrid定义为资源。在你的UserControl中,定义你的DataGrid和一些依赖属性,这些属性可以用来设置正确的HeadersVisibility值。 – ChrisNel52 2010-07-07 18:31:34