2011-09-19 39 views
0

我正在处理WPF应用程序,客户端可以从下拉列表(组合框)中选择设备,然后在DataGrid控件中向其显示其规格。我为20种不同的产品制作了大约20种不同的DataGrid,并且在我的Window.xaml标记的预定义Grid.Row中保持它们彼此重叠(彼此叠加),每个DataGrid的可见性设置为隐藏,例如当ComboBox选择被更改时,我将属于从ComboBox中选择的特定产品的DataGrid的可见性更改为我后面的代码中的MonitorDataGrid.Visibility = Visibility.Visible;在XAML的一个窗口中管理大量重叠控件

它做的工作,但管理窗口的布局已变得非常艰巨和灾难,特别是当我想改变DataGrids的样式或位置。我想知道在同一区域的一个窗口中管理大量控件标记的最佳方式是什么?

在此先感谢。

回答

2

起初,电网具有AutoGenerateColumns属性自动提取从给它列表列,

,但如果你有实体的一些额外的属性,你不想展示,您可以在ResourceDictionary中创建模板,只保留下拉和改变网格模板的项键上itemchange

显示和隐藏网格是真的做到这一点

而且this应该帮助做你想做的最糟糕的方式

希望这会有所帮助

+0

哎ArsenMkrt,谢谢你的帮助。我知道DataGrid内部控制人,我花了几天时间制作各种样式和属性的各种DataGrid。在答案的第一部分中,你的意思是说我应该将产品的详细信息存储在数据库中,然后只有一个DataGrid和AutoGenerateColumns =“True”?我最初是以最直观的方式完成这项工作的,但对于我正在使用的应用程序的要求已经改变了一个晚上,最初我只有3个设备可以显示,现在我有20多个!我想我现在应该这样做'数据库'的方式? –

+1

@estranged,你不需要在数据库中创建任何东西,你应该为每个网格类型创建不同的类,并将该类的列表分配给网格的ItemSource,当AutoGenerateColumns属性为true时,单个网格将自动填充列,或者您可以将模板存储在resourcedictionary中,并在选择下拉项目后加载它们 –