2012-11-23 129 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; 
相关问题