2010-04-23 4 views
2

У меня есть ListBox, который содержит текстовое поле и выпадающий в его DataTemplate:Привязка WPF ComboBox к другому ItemsSource в 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> 

Я хочу, чтобы связать ListBox к коллекции объектов (которые Я сделал успешно), но я хочу, чтобы в поле со списком в приведенном выше шаблоне datatemplate был установлен его элемент itemssource для локального свойства в окне (массив ints). Я все еще хочу, чтобы combobox имел двустороннюю привязку между выбранным объектом и свойством в коллекции объектов ...

У меня есть следующий код: PitcherListBox.DataContext = this;

В основном, в конце концов, я хочу, чтобы в выпадающем списке в списке отображался другой источник items, чем сам список. Я не могу понять, как изменить элемент ItemsSource ComboBox в XAML. Может ли кто-нибудь предоставить мне некоторые отзывы? Благодаря!

ответ

4

Попробуйте это:

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

Обратите внимание, что вам нужно заменить YourWindowTypeHere с типом окна, содержащего LocalArrayOfIntsProperty! Также помните, что вам нужно будет определить пространство имен xml для этого типа!

+0

Я создал пространство имен «xmlns: Local =« clr-namespace: MyApp »и использовал приведенную ниже строку, используя это для типа: должен быть указан для относительного источника в режиме FindAncestor – tjans

+0

Nevermind, мне просто нужно было построить, и ошибка исчезла. Большое спасибо за вашу помощь ... – tjans

+0

Да, это ошибка в VS2008 (не знаю о VS2010). вы сказали, что он обычно исчезает после реорганизации. Кстати: если бы мой ответ был полезным, вы должны отметить его как принятый, нажав на галочку, кроме моего ответа. – gehho

Смежные вопросы