WPF: проблема с привязкой значений к ComboBox внутри GridViewColumn

DataContext моих представлений привязан к модели презентации с двумя элементами observableCollections. В представлении у меня есть один listView, к которому привязан ItemSource, это первая наблюдаемая коллекция. В одном из столбцов LilstViews я хочу представить значения из второй наблюдаемой коллекции в моей модели презентации. Я не могу понять, как получить значения из observableCollection в поле со списком. Кто-нибудь знает, как решить эту проблему?


person KaJo    schedule 13.11.2008    source источник


Ответы (1)


Первое, что вам нужно сделать, это создать шаблон данных, содержащий ваш ComboBox, в этом случае я привязал ItemsSource к DependencyProperty в главном окне. Он содержит модель представления со свойством ComboSource. SelectedValue был привязан через DataContext ListViewItem к свойству, которое содержит выбранное значение.

<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>

Затем вам нужно будет сослаться на это из CellTemplate в GridViewColumn.

<GridViewColumn
    Header="Selection"
    Width="160"
    CellTemplate="{StaticResource comboBoxTemplate}"
    />
person Ian Oakes    schedule 13.11.2008