C# 在WPF组合框上设置多个SelectedValue

C# 在WPF组合框上设置多个SelectedValue,c#,wpf,data-binding,combobox,C#,Wpf,Data Binding,Combobox,注意:如果某些参数看起来很奇怪,我使用的是Mahapps.Metro 因此,我有一个名为User的模型,它有一个StateId 组合框中充满了状态,因此当选择一个状态时,我将所选状态的Id放入User.StateId,如下所示: <ComboBox Grid.Column="0" Margin="0,5,0,0" mah:TextBoxHelper.ClearTextButton="True" mah:TextBoxHelper.Watermark="Sel

注意:如果某些参数看起来很奇怪,我使用的是Mahapps.Metro

因此,我有一个名为
User
的模型,它有一个
StateId

组合框中充满了
状态
,因此当选择一个状态时,我将所选状态的
Id
放入
User.StateId
,如下所示:

<ComboBox
    Grid.Column="0"
    Margin="0,5,0,0"
    mah:TextBoxHelper.ClearTextButton="True"
    mah:TextBoxHelper.Watermark="Select a State..."
    ItemsSource="{Binding States, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    SelectedItem="{Binding SelectedState, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    SelectedValue="{Binding User.StateId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    SelectedValuePath="Id" />

这个很好用。但是,如果我想将所选项目的另一个参数放入
User
模型,该怎么办?假设
User
还有一个名为
StateName
的属性,当我选择一个新的
State
时,我将
State.Id
State.Name
传递到
User.StateId
User.StateName


希望这不会太令人困惑。谢谢

SelectedValue
SelectedItem
只能绑定到单个源属性。但是您应该能够将
SelectedItem
绑定到
User
类的
State
属性,而不是试图同时设置
StateId
StateName


如果
User
类没有
State
属性,您可以绑定到视图模型的
SelectedState
属性(看起来您已经是),然后依次设置用户的
StateId
StateName
属性。无论如何,您只能绑定到
SelectedItem
SelectedValue

SelectedValue
SelectedItem
只能绑定到单个源属性。但是您应该能够将
SelectedItem
绑定到
User
类的
State
属性,而不是试图同时设置
StateId
StateName


如果
User
类没有
State
属性,您可以绑定到视图模型的
SelectedState
属性(看起来您已经是),然后依次设置用户的
StateId
StateName
属性。您应该只绑定到
SelectedItem
SelectedValue

使用SelectedItem并设置用户的a状态属性,而不是设置StateId和StateName?我还没有真正使用导航属性,但我想这是开始这样做的另一个好理由。谢谢mm8,和往常一样。@Desomph当您选择一个项目时,SelectedState属性会在视图模型中被触发,当这种情况发生在视图模型中时,您不能从那里设置用户声明和名称吗?使用SelectedItem并设置用户的a State属性,而不是设置StateId和StateName?我还没有真正使用导航属性,但我想这是开始这样做的另一个很好的原因。谢谢mm8,和往常一样。@Desomph当您选择一个项目时,SelectedState属性在视图模型中被触发,当这种情况在视图模型中发生时,您不能从中设置用户声明和名称吗?