更改组合框应更新实体EF6



所以,基本上,我有一个实体,我使用LINQ查询来获取一些项,并将其绑定到一个组合框。

当组合框中的项目发生更改时,我要做的是让实体更新,而不在组合框中手动更新。SelectedIndex/SelectedValue更改事件。我只是想知道是否有更好的方法?

伪代码:

SomeEntity se = new SomeEntity();
var q = from x in se select x;
cbComboBox.Datasource = q.ToList();
cbComboBox.DisplayMember = "SomeValue";
cbComboBox.ValueMember = "SomeValueID";
cbComboBox.SelectedValue = se.SomeValueID;

所以组合框显示了我想要的正确值。没关系。

事情是这样的,当用户更改组合框时,我希望se.SomeValueID能够反映这种更改。

我知道我可以在组合框SelectedValue事件中设置se.SomeValueID,但有更好的方法吗?se.SomeValueID在哪里自动更新?

假设您的问题是关于Windows窗体的。要将SelectedValue绑定到对象的属性,可以添加自定义绑定:

cbComboBox.DataBindings.Add("SelectedValue", se, "SomeValueID");

该绑定是双向的,在cbComboBox.SelectedValue = se.SomeValueID;行中不需要。

您应该使用XAML中定义的绑定而不是C#代码隐藏代码来实现这一点,下面是一个示例:

 <ComboBox ItemsSource="{Binding SomeList}"
           DisplayMemberPath="SomeField"
           SelectedItem="{Binding CurrentItem, Mode=TwoWay}"/>

通过这种方式,您可以在视图模型类中拥有实体列表(SomeList)和相同类型的对象(CurrentItem),每当用户在组合框中更改所选项目时,它们都会更新。如果你不需要整个对象,你可以将所选的值绑定到你的视图模型上显示的一个属性,该属性与id的时间相同。

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新