2011-09-19 40 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中,並在選擇下拉項目後加載它們 –