2010-04-23 68 views
2

我有一个包含一个文本框,并在其DataTemplate中的组合框的列表框:一个ListBox中绑定一个WPF组合框到不同的ItemsSource的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> 

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

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

基本上,我希望列表框中的组合框具有与列表框本身不同的itemssource。我似乎无法弄清楚如何在XAML中更改组合框的ItemsSource。有人可以提供一些反馈吗?谢谢!

回答

4

试试这个:

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

请注意,您需要使用含有LocalArrayOfIntsProperty窗口的类型来代替YourWindowTypeHere!另外请记住,您将需要为该类型定义一个xml命名空间!

+0

我创建了一个命名空间“xmlns:Local =”clr-namespace:MyApp“,并使用下面提供的行,使用这个类型:AncestorType = {x:Type Local:DetailsWindow},并且我得到一个错误:Ancestor type必须在FindAncestor模式中为相对源指定 – tjans 2010-04-23 16:53:50

+0

Nevermind,我只需构建并且错误消失了。非常感谢您的帮助... – tjans 2010-04-23 17:00:47

+0

是的,这是VS2008中的一个错误(不知道VS2010)。你说,它通常在重建后消失BTW:如果我的答案有帮助,你应该点击除了我的答案之外的复选标记,将其标记为已接受。 – gehho 2010-04-26 06:17:21

相关问题