Доступ к свойствам Combobox из его GroupStyle.HeaderTemplate
Я сделал несколько HeaderTemplate для Combobox.GroupStyle для отображения элементов в группах. И знаете, мне нужно выполнить некоторые операции с Combobox, когда пользователь нажимает на GroupHeader. Я пытался написать триггер в моем HedaerTemplate для Combobox.GroupStyle, но он не работает. Ниже приведен полный код комбинированного списка:
<ComboBox x:Name="comboBox" DisplayMemberPath="Type"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="5" MinWidth="100">
<ComboBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}"
FontWeight="Bold"
Margin="0,5,0,0"
Padding="3" Background="LightGreen" MouseDown="TextBlock_MouseDown">
</TextBlock>
<DataTemplate.Triggers>
<EventTrigger RoutedEvent="TextBlock.MouseDown">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.Target="{Binding RelativeSource ={RelativeSource TemplatedParent}}"
From="0" Storyboard.TargetProperty="Width"
To="300" Duration="0:0:5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ComboBox.GroupStyle>
</ComboBox>
Я взял свойство "Ширина" просто для примера. Но это не сработало правильно. Анимация расширяет GroupHeader, а не весь ComboBox.
1 ответ
Решение
Ваша TemplateBinding привязывается к элементу, к которому применяется шаблон, то есть к заголовку. Возможно, вам нужно установить привязку как
{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ComboBox}}
?
(Извините, сам не пробовал код.)