【发布时间】:2017-04-23 12:43:14
【问题描述】:
所以我有非常简单的combobox 包含值列表。我应该将selectedvalue 绑定到viewmodel 属性并将其存储在数据库中。以下是我目前的做法:
SampleViewModel.cs
public class SampleViewModel: BindableBase
{
public SampleViewModel()
{
MyDetails = new ObservableCollection<DetailItems>(){
new DetailItems{Name="Detail1"},
new DetailItems{Name = "Detail2"},
new DetailItems{Name= "Detail3"},
new DetailItems{Name="Detail4"}
};
}
private ObservableCollection<DetailItems> _myDetails;
private string _myDetail;
public ObservableCollection<DetailItems> MyDetails { get { return _myDetails; } set { SetProperty(ref _myDetails, value); } }
public string MyDetail { get { return _myDetail; } set { SetProperty(ref _myDetail, value); } }
}
public class DetailItems: BindableBase
{
private string _name;
public string Name { get { return _name; } set { SetProperty(ref _name, value); } }
}
我在View中的ComboBox如下
<ComboBox x:Name="cbDetails"
ItemsSource="{Binding MyDetails}"
DisplayMemberPath="Name"
SelectedValuePath="{Binding Path=Name}"
SelectedValue="{Binding MyDetail}"/>
但是每当我在后端获取数据时,字符串MyDetail 将有一个DetailItems 实例转换为string。谁能告诉我如何更改它以将适当的值绑定到MyDetail?
【问题讨论】:
-
您不应该在 SelectedValuePath 中使用绑定。如果您希望值为 Name(就像您已经在 DisplayMemberPath 中所做的那样),请在此处使用 Name。
-
@Evk.. 完美的伙伴.. 非常感谢您的快速回复.. 您能否将其添加为答案?
标签: c# wpf mvvm combobox prism