将WPF ComboBox绑定到ListBox DataTemplate中的其他ItemsSource

时间:2010-04-23 03:06:18

标签: wpf combobox listbox datatemplate data-binding

我有一个ListBox,在其datatemplate中包含一个文本框和一个组合框:

<ListBox Height="147" Margin="158,29,170,0" Name="PitcherListBox" VerticalAlignment="Top" ItemsSource="{Binding SomeCollectionOfObjects}" Background="Black">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBox Text="{Binding Path=Name}" />
                    <ComboBox ItemsSource="{Binding LocalArrayOfIntsProperty}" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

我想将列表框绑定到一个对象集合(我已经成功完成),但我希望上面的datatemplate中的组合框将其itemssource设置为窗口上的本地属性(int的数组)。我仍然希望组合框在其所选项目与对象集合上的属性之间具有双向绑定...

我在代码中有以下内容: PitcherListBox.DataContext = this;

最后,我希望列表框中的组合框具有与列表框本身不同的项目源。我似乎无法弄清楚如何在XAML中更改ComboBox的ItemsSource。有人可以给我一些反馈意见吗?谢谢!

1 个答案:

答案 0 :(得分:4)

试试这个:

<ComboBox ItemsSource="{Binding LocalArrayOfIntsProperty, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type YourWindowTypeHere}}}" />

请注意,您需要将YourWindowTypeHere替换为包含LocalArrayOfIntsProperty的窗口类型!还要记住,您需要为该类型定义一个xml命名空间!