我正在使用MVVM模式开发项目。在项目中我有两个viewmodel即
在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
删除CountryViewModel.SelectedCountry
,我可以获取该属性。
但问题是我有另一个状态组合框,它依赖于国家组合框。 编辑:即在Country ViewModel中,当SelectedCountry更改时,我调用了方法GetAllState()。
那么我可以将Combobox的SelectedValue属性绑定到CountryViewModel的CountryViewModel.SelectedCountry和EmpViewModel的Country_Id吗?
答案 0 :(得分: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 View Model中我添加了以下行:
newEmp.Country_Id = this.CountryViewModel.GetValue<Country>("SelectedCountry").Country_Id;