ItemsControl.ItemTemplate привязан к другой коллекции, чем ItemsControl - PullRequest
1 голос
/ 15 июня 2011

У меня есть связанное древовидное представление с ItemsControl, которое динамически создает элементы древовидного представления во время выполнения. Однако, чтобы сделать это, у меня ItemsControl ItemsSource привязан к другой коллекции, чем к древовидной. Это работает, но проблема связана с привязкой текстовых полей в ItemsContol, что должно отображаться на самом деле является членом SubOrganLocations, но я не могу заставить привязку работать правильно. Независимо от того, что я делаю, WPF ищет привязку к свойству ItemsControl ItemsSource ProjectOrganLocation.LesionTypes вместо SubOrganLocations. Ниже приведен фрагмент дерева XAML

<TreeView ItemsSource="{Binding GlobalOrganTree}">
<TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding SubOrganLocations}">
        <StackPanel Orientation="Horizontal">     
        <ItemsControl x:Name="ItemsControlGrid" ItemsSource="{Binding Path=ProjectOrganLocation.LesionTypes, Source={StaticResource Locator}}" >
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                     <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding SubOrganLocations, Path=OrganLocation.Labels}"
                         Width="75" 
                         TextAlignment="Center"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
        </StackPanel>
   </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

Как получить привязку текстовых полей к свойству SubOrganLocations вместо свойства ProjectOrganLocation.LesionTypes?

1 Ответ

2 голосов
/ 15 июня 2011

RelativeSource распространен, когда вам нужно привязать к DataContext, который находится выше в дереве:

<TextBox Text="{Binding Path=DataContext.Labels, RelativeSource={RelativeSource AncestorType={x:Type TreeViewItem}}}" />

Это привязывает к DataContext TreeViewItems (орган) и получает метки от него.

...