将DataTemplate中的组合框绑定到不同的ItemSsource

时间:2014-01-24 14:40:44

标签: c# wpf gridview binding datatemplate

我有2个ObservableCollection列表,我们可以调用A和B,然后我有一个GridView,我想绑定到列表A和一个ComboBox INSIDE,GridView,我想绑定到列表B. 我已经通过代码设置GridView的ItemsSource属性:gridview.ItemsSource = A(并且它可以工作!)。关于ComboBox它的实例它不是代码可用的,我想因为它的定义它被包含在DataTemplate标签之间;所以我想知道如何通过代码或XAML将组合绑定到列表B.

遵循XAML代码:

<ListView Grid.Row="0" Grid.Column="1"  HorizontalAlignment="Stretch" Margin="0,0,0,0" Name="lstReplacements" VerticalAlignment="Stretch">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn HeaderContainerStyle="{StaticResource MyHeaderStyle}" Header="Wrong text" DisplayMemberBinding="{Binding Word}"/>
                            <GridViewColumn HeaderContainerStyle="{StaticResource MyHeaderStyle}" Header="Replacement" Width="60" DisplayMemberBinding="{Binding Replacement}" />
                            <GridViewColumn HeaderContainerStyle="{StaticResource MyHeaderStyle}" Header="Type"  Width="30">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <ComboBox ItemsSource="{??????}" DisplayMemberPath="??????"  Grid.Row="1" Grid.Column="0" Name="cmbCorrectionType"  Width="75" />
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                        </GridView>
                    </ListView.View>
                </ListView>

提前感谢您的支持! 克里斯

1 个答案:

答案 0 :(得分:0)

我假设此控件位于UserControl中,并且 将UserControl的DataContext设置为CollectionA和CollectionB所在的集合所在的类实例

然后,您可以使用RelativeSource绑定:

<ComboBox ItemsSource="{Binding DataContext.CollectionB,
                               RelativeSource={RelativeSource Mode=FindAncestor, 
                                              AncestorType=UserControl}}"/>

此外,您可以将ListView的DataContext设置为类实例,您只需将AncestorType更改为ListView,而不是上述绑定中的UserControl。