所以我有非常简单的combobox
包含值列表。我应该将selectedvalue
绑定到viewmodel
属性并将其存储在数据库中。下面是我目前的做法:将ComboBox的SelectedValue赋值给viewmodel的字符串属性wpf
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,则只需使用Name即可(与您已在DisplayMemberPath中执行的操作一样)。 – Evk
@Evk ..完美的伙伴..非常感谢您的快速回复..您可以添加它作为答案吗? –