【问题标题】:Setting multiple SelectedValue on WPF ComboBox在 WPF ComboBox 上设置多个 SelectedValue
【发布时间】:2023-04-01 18:13:01
【问题描述】:

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

所以,我有一个名为 User 的模型,它有一个 StateId
Combobox is filled with States, so when a state is selected I put the Id of the selected state into User.StateId like this:

<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.IdState.Name 都传递给User.StateIdUser.StateName?

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

【问题讨论】:

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

标签: c# wpf data-binding combobox


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2017-11-02
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多