WPF Multiple ItemSources? - PullRequest
       6

WPF Multiple ItemSources?

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

Можно ли иметь несколько источников ItemSource для одного элемента управления?

Учитывая код ниже:

<ComboBox Margin="137,101,169,183" ItemsSource="{Binding collection}"   SnapsToDevicePixels="True"            
 <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                <CheckBox Command="{Binding CheckCommand}" IsChecked="{Binding IsChecked}" Content="{Binding Name}"/>
                    <TextBlock Text="" />
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

Для TextBlock в ComboBox DataTemplate требуются данные из другого свойства в виртуальной машине, чем свойство ComboBox. Как этого достичь?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

Вы можете использовать RelativeSource -FindAncestor для доступа к визуальному дереву и получения другого DataContext.

Например (при условии, что команда - то, что вам нужно):

Command=”{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}, Path=CheckCommand}”

Этот также должен служить хорошим ресурсом.

Редактировать: Опечатка и ресурсы.

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

Если я правильно помню, DataTemplates запускаются в своей собственной области и не могут напрямую использовать ElementNames, определенные вне DataTemplate.Однако вы могли бы обойти это, используя StaticResource и ссылаясь на это непосредственно из TextBlock внутри шаблона.

Я не пробовал подход Ragepotatos выйти за рамки DataTemplate, но хотел бы знать, работает ли этодля вас тоже.

...