WPF:在GridViewColumn中绑定值到ComboBox的问题

时间:2008-11-13 16:17:03

标签: wpf data-binding combobox gridviewcolumn

My Views dataContext与带有两个observableCollections成员的presentationModel绑定。在View中我有一个listView,ItemSource绑定的是第一个observableCollection。在其中一个LilstViews列中,我想在我的presentationModel中显示第二个obeservable Colletion的值。我无法弄清楚如何从observableCollection中获取值到我的组合框中。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您需要做的第一件事是创建一个包含ComboBox的数据模板,在这种情况下,我已将ItemsSource绑定到主机Window上的DependencyProperty。它包含表示模型,它具有一个名为ComboSource的属性。 SelectedValue已经通过ListViewItem的DataContext绑定到一个包含所选值的属性。

<ListView.Resources>
    <DataTemplate x:Key="comboBoxTemplate">
        <ComboBox
            ItemsSource="{Binding 
                            Path=ModelData.ComboSource, 
                            RelativeSource={RelativeSource AncestorType=Window}}"
            SelectedValue="{Binding 
                            Path=DataContext.Selection, 
                            RelativeSource={RelativeSource AncestorType=ListViewItem}}"
            DisplayMemberPath="Item"
            SelectedValuePath="Id"
            />
    </DataTemplate>
</ListView.Resources>

然后,您需要从GridViewColumn上的CellTemplate

引用它
<GridViewColumn
    Header="Selection"
    Width="160"
    CellTemplate="{StaticResource comboBoxTemplate}"
    />