C# 在WPF组合框上设置多个SelectedValue
注意:如果某些参数看起来很奇怪,我使用的是Mahapps.Metro 因此,我有一个名为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
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属性在视图模型中被触发,当这种情况在视图模型中发生时,您不能从中设置用户声明和名称吗?