2012-11-23 47 views
2

我使用MVVM pattern.In項目我有開發項目中的兩個視圖模型即如何將選定的Combobox項目綁定到兩個不同的屬性?

  1. CountryViewModel和2 EmpViewModel

在countryviewmodel我已經存儲了關於國家,州,市等

信息

在EmpViewModel我有一個控件,它具有顯示國家名稱的組合框,選擇的值設置爲CountryViewModel中的國家ID。

這裏是代碼:

<ComboBox Grid.Row="0" Grid.Column="1" Margin="3" 
      ItemsSource="{Binding CountryViewModel.Countries}" SelectedValue="{Binding Title}" 
      SelectedItem="{Binding CountryViewModel.SelectedCountry,Mode=TwoWay}"        
      SelectedValuePath="Country_Id" DisplayMemberPath="Title"> 
    </ComboBox> 

這是工作的罰款。

我在EmpViewModel中有本地財產國家ID,並且想要將它綁定到Combobox的SelectedValue屬性,如果我從CountryViewModel.SelectedCountry刪除CountryViewModel,則可以獲得該屬性。

但問題是我有另一個組合框是依賴於國家組合框的狀態。 編輯:即在國家ViewModel當SelectedCountry更改時,我已調用方法GetAllState()。

所以我可以將Combobox的SelectedValue屬性綁定到來自CountryViewModel的CountryViewModel.SelectedCountry和EmpViewModel的Country_Id?

回答

1

我找到了一個解決辦法

我有以下方法在接口寫:

public interface IViewModel 
{ 
    T GetValue<T>(string propertyName); 
} 

在國家視圖模型我實現此方法爲:

public override T GetValue<T>(string propertyName) 
    { 
     T result = default(T); 
     result = (T)Convert.ChangeType(this.SelectedCountry, typeof(T), null); } 

而在的Emp查看模型我添加了以下行:

newEmp.Country_Id = this.CountryViewModel.GetValue<Country>("SelectedCountry").Country_Id; 
相關問題