簡體   English   中英

如何更改DataGrid內部的ComboBox的ItemsSource?

[英]How to change ItemsSource of ComboBox inside DataGrid?

場景 :我的View中有一個ContentControl,其Content屬性與ViewModel中的DataGrid綁定。 我將找出在運行時在DataGrid中顯示的確切列數,這就是為什么我在ViewModel中以編程方式創建DataGrid的原因。 我的DataGrid的ItemsSource是一個DataTable。 我將DataGrid的'AutoGeneratingColumns'設置為False,並且手動創建列。 我的DataGrid以及許多其他列都有兩個ComboBox類型的列。 我必須根據第一個ComboBox的選定索引更改第二個ComboBox的ItemsSource。 因此,DataGrid的每一行可以為第二個ComboBox提供不同的ItemsSource。

我的問題是如何在運行時在DataGrid的單行中基於第一個ComboBox中的選定索引動態更改第二個ComboBox的ItemsSource? 我還想知道在這種情況下是否有比我目前的方法更好的解決方案?

如果您使用的是視圖模型,這並不難。 將組合框將項目源綁定到視圖模型上的屬性。 將第一個組合框的selecteditem綁定到視圖模型上的屬性。 在該屬性的設置器中,更改第二個組合框的集合。

對於視圖模型,這是最簡單的方法。 盡管不是在視圖中創建datagrid列,但您可以將其移至幫助器類,然后從datagrid的后面代碼或子類中調用它。 我知道,使用運行時列很難。

更新:我通常要做的是在顯示數據時使用普通列,並在選定的行上使用組合框。 這樣,您就不會有問題,當數據網格的selecteditem更改時,您將必須同步selecteditemproperty。 這也將觸發第二個組合框的itemssource的更新

另一種選擇是在主集合中創建組合框子項的集合,並預先填充它們。 並根據組合框1中所選項目的更改來更改組合框2的集合。但是,這很可能需要大量的工作和存儲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM