【问题标题】:Binding combobox in DataTemplate to a different ItemSource将 DataTemplate 中的组合框绑定到不同的 ItemSsource
【发布时间】:2014-02-15 14:35:17
【问题描述】:

我有 2 个 ObservableCollection 列表,我们可以将它们称为 A 和 B,然后我有一个要绑定到列表 A 的 GridView 和一个要绑定到列表 B 的 GridView INSIDE 的 ComboBox。 我已经通过代码设置了 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>

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

【问题讨论】:

    标签: c# wpf gridview binding datatemplate


    【解决方案1】:

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

    然后您可以使用RelativeSource 进行绑定:

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

    您还可以将 ListView 的 DataContext 设置为类实例,您只需将 AncestorType 更改为 ListView 以代替上述绑定中的 UserControl。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多