我有一個包含數字組合框的頁面。每個組合框都綁定到一個單獨的視圖模型。我如何從組合框中獲取所有值並將它們傳遞給另一個viewmodel(使用mvvm)?MVVM Silverlight 4父子查看模型
我簡要介紹了創建一個新的viewmodel,它的屬性是組合框視圖模型,但綁定看起來不起作用。
任何想法?
感謝,格雷姆
我有一個包含數字組合框的頁面。每個組合框都綁定到一個單獨的視圖模型。我如何從組合框中獲取所有值並將它們傳遞給另一個viewmodel(使用mvvm)?MVVM Silverlight 4父子查看模型
我簡要介紹了創建一個新的viewmodel,它的屬性是組合框視圖模型,但綁定看起來不起作用。
任何想法?
感謝,格雷姆
如果我理解正確的話,你應該有父綁定到ComboBox的的SelectedItem。我的恐懼是,你的SelectedItem已經綁定到你的ComboBox的視圖模型,但這通常是不是一個好主意。
ViewModels只能在控件中私下使用。因此,例如,在您的組合框中,您可能想要創建一個包含該組合框的新用戶控件。通過這種方式,您可以在用戶控件中處理所有「子視圖」模型內容,並且新用戶控件的使用者可以綁定任何所選元素並與其進行交互,而不受約束。
如果我理解你正確地有ComboBoxes填充分離的ViewModels(使用ItemsSource
),所以要從它們獲取值,您應該將其SelectedItem
屬性綁定到一個ViewModel。
要告訴你我的意思是,讓我們假設我們有2周的ViewModels:
public class ItemOneViewModel
{
public Name { get; set; }
}
public class ItemTwoViewModel
{
public Name { get; set; }
}
和一個共同的視圖模型:
public class MainViewModel
{
public ObservableCollection<ItemOneViewModel> ComboBox1Items { get; set; }
public ObservableCollection<ItemTwoViewModel> ComboBox2Items { get; set; }
public ItemOneViewModel SelectedItemFromComboBox1 { get; set; }
public ItemTwoViewModel SelectedItemFromComboBox2 { get; set; }
}
,然後你可以綁定:
ComboBox1Items
與ItemsSource
的ComboBox1
SelectedItemFromComboBox1
與ComboBox1
ComboBox2Items
SelectedItem
與ComboBox2
SelectedItemFromComboBox2
ItemsSource
與ComboBox2
得益於它在MainViewModel
的SelectedItem
您可以訪問在組合框選擇的值。
我希望你能理解我的說明的東西;)
上面的代碼簡化過程的版本 - 所有的ViewModels也許應該實現INotifyPropertyChanged接口。
不知道我明白你的意思...做我上面的評論添加任何價值? – 72GM 2011-06-01 16:39:11
嗨。澄清。 MainPage包含usercontrolA,其中包含用於說明訂單的組合框。 usercontrolA具有OrdersViewModel的數據上下文。組合itemssource綁定到Orders集合,並將selecteditem綁定到選定的單個實體。主頁面包含usercontrolB,usercontrolC等,它們以相同的方式設置,但對於不同的項目集合。這些控件完美地工作。我想要做的是,在主頁面上,按下按鈕時收集所有選定的值(使用mvvm)並對數據庫執行插入操作。 – 72GM 2011-06-01 10:44:56
我想如果我可以將主頁上的文本框綁定到其中一個組合框的選定值,這將是正確方向上的一步...我想嘗試並避免消息或事件並保持簡單?? – 72GM 2011-06-01 15:53:39
如果我正確理解你,你可以從MainPage(或它的視圖模型)訪問UserControls的ViewModels,如果可以的話,你可以從這些ViewModels中讀取SelectedComboBox的屬性。 – 2011-06-01 19:20:48