【问题标题】:how do I set selectedvalue and itemssource of combobox within datatemplate如何在数据模板中设置组合框的 selectedvalue 和 itemssource
【发布时间】:2015-09-11 08:52:44
【问题描述】:

这个问题与MVVM项目结构有关。

为了在 ListView 中显示数据,我使用 DataTemplate。 ListView 的 ItemsSource 是 ObservableCollection(of Person)。到目前为止没有什么特别的。

但是在DataTemplate中我想在一个ComboBox中显示每个Person的State属性,其中显示的是实际值,用户可以选择另一个State。 State来自States,即ObservableCollection(of State)。

为了显示所有状态,我需要将 DataContext 绑定到 ViewModel 的“顶层”。但是我如何再次归结为个人,这在 DataTemplate 中显示?还是我需要另一种方法来解决这个问题?

在 XAML 中我有这个:

    <ComboBox DataContext="{Binding DataContext, ElementName=pageRoot}" ItemsSource="{Binding States}" DisplayMemberPath="Description" SelectedValue="{Binding ??????}"  SelectedValuePath="ID" />

我的问题是:我需要设置什么才能正确绑定 SelectedValue 以便它在组合框的文本字段中显示每个人的实际状态?

【问题讨论】:

    标签: vb.net mvvm combobox datacontext selectedvalue


    【解决方案1】:

    知道了! 对于 ComboBox 的 ItemsSource,我需要 DataContext 层次结构的“更高”级别。我只需要将 ItemsSource 绑定到该级别,而不是将整个 ComboBox 绑定到该 DataContext。

    更正后的代码现在如下所示:

    <ComboBox                     
                    ItemsSource="{Binding DataContext.States, ElementName=pageRoot}" 
                    DisplayMemberPath="Description" 
                    SelectedValue="{Binding State.ID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
                    SelectedValuePath="ID" 
    

    试错成功! :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多