我需要根据父容器接收的数据上下文中的字段值来绑定组合框的选定项。将组合框SelectedItem绑定到DataContext值
容器是当它被点击
private void Button_Click(object sender , RoutedEventArgs e)
{
GridEmployee.DataContext = ((Button)sender).DataContext;
}
接收它的DataContext从项目在itemcontrol网格*按钮得到它的ItemSource从员工界的列表中itemControl
电网其中包含一些控件其中一个组合框,我通过枚举初始化
public Enum Gender
{
Male,Female
};
foreach(string _gender in Enum.GetNames(Gender))
{
GenderComboBox.Items.Add(_gender);
}
Employee类具有匹配的属性性别
private string gender;
public string Gender
{
get{return gender;}
set
{
gender = value ;
if(PropertyChanged != null)
PropertyChanged(this,new PropertyChangedEventArgs("Gender"));
}
}
的GenderComboBox.SelectedItem为界,性别属性的值有界对象员工
<ComboBox x:Name="GenderComboBox" SelectedItem="{Binding Gender , Mode=TwoWay}" />
这里当然,该项目没有得到选择的问题..
我可能是它的原因,在组合框中的项目是字符串,我试图根据自定义转换器绑定它们,它只取得枚举值并返回它的.ToString() 。
但我无法检查此问题,因为在表单的承包商中抛出了An XamlParseException。
我没有完全理解它为什么会发生,可能是因为它没有一个值来转换,当我形成负载。
因此得出结论我如何将属性从我的员工类 绑定到具有属性值的字符串表示的组合框?
我刚看到一个例子其中有人使用 GenderComboBox.ItemSource = Enum.GetValues(typeof(Gender)); 那么为什么要使用item来源? –
“这里的问题当然是物品没有被选中”。当您在代码中设置属性时,您是否希望其中一个项目显示为在UI上选定的项目,或者您是否希望在选择UI中的某个项目时设置了代码属性?我们要去哪里... –
另外我建议在这里使用单选按钮而不是组合框。你可以直接使用这种方法与枚举:http://stackoverflow.com/questions/397556/wpf-how-to-bind-radiobuttons-to-an-enum –