ComboBox将UserID值和User Object分配给实体

时间:2018-02-05 03:03:51

标签: c# wpf entity-framework mvvm combobox

我有一个db生成的实体:

public partial class UserMobileDevice
{
    public string DeviceID { get; set; }
    public string DeviceType { get; set; }
    public int UserID { get; set; }

    public virtual User User { get; set; }
}

现在我想连接一个选择用户并更新记录上的UserID和User对象的ComboBox。

所以这是我的xaml:

<ComboBox Name="cboDefaultUser" 
          HorizontalAlignment="Stretch"
          VerticalAlignment="Top" 
          ItemsSource="{Binding Users}"
          DisplayMemberPath="Username"
          SelectedValuePath="UserID"
          SelectedValue="{Binding TheEntity.UserID, 
                                  UpdateSourceTrigger=PropertyChanged, 
                                  NotifyOnSourceUpdated=True, 
                                  NotifyOnValidationError=True, 
                                  Mode=TwoWay}" />

哪个更新本地实体上的UserID就好了,不过用户对象呢?我如何同时分配?

(也使用MVVM)

[加法]

正如您从SelectedValue绑定中看到的那样,我的ViewModelentity中的property名为TheEntity。因此property中实际上没有UserID {get; set;} ViewModel,我也可以使用它来设置User对象。那么我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

ComboBox只会为您设置一个属性。如果要同时设置User属性和UserId属性,则可以绑定到您在同一类型的另一个部分类定义中定义的自定义属性,并为您执行此操作:

public partial class UserMobileDevice
{
    public User UiUser
    {
        get { return User; }
        set
        {
            User = value;
            if (value != null)
                UserId = value.UserId;
        }
    }
}

然后将SelectedItem的{​​{1}}属性绑定到此属性:

ComboBox

尝试准确使用自动生成的类型&#34; as-is&#34;很少有用。