I have such style in WPF
<Style x:Key="SubTabItem" TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsSelected}" Value="false">
<Setter Property="TabItem.IsEnabled" Value="false" />
</DataTrigger>
</ControlTemplate.Triggers>
I want to use it with my TabItem in such way
<TabControl x:Name="configControl" Padding="0" Background="{x:Null}" BorderThickness="0" FocusVisualStyle= "{x:Null}" >
<TabItem x:Name="MyName" Header="My Name" Visibility="Visible" Style="{DynamicResource SubTabItem}">
</TabItem>
</TabControl>
I assign configControl.DataContext in codebehind.
When i use it in such way(with exact binding in ControlTemplate datatrigger) - it works. But I want to PASS the different binding path to the style, when using it in target item. As i understand i can do it through TemplateBinding but i can't find how?
I can do several same styles with each binding defined, but i want to find a way how to simplify it, so i can write smth like this:
<TabItem x:Name="MyName" Header="My Name" Visibility="Visible" Style="{DynamicResource SubTabItem}" Binding={Binding Path=IsSelected}>
</TabItem>
<TabItem x:Name="MyName2" Header="My Name2" Visibility="Visible" Style="{DynamicResource SubTabItem}" Binding={Binding Path=IsThisSelected}>
</TabItem>
so it take this paths and decide if to enable or disable each of this tab item based on passed value.
Если я правильно понимаю ваш вопрос, вы могли бы сделать это с помощью Триггеров в вашем стиле
Примерно так:
<Style.Triggers>
<DataTrigger Binding="{Binding TemplateNameProperty}" Value="Template1">
<Setter Property="Template" Value="{StaticResource Template1}" />
</DataTrigger>
<DataTrigger Binding="{Binding TemplateNameProperty}" Value="Template2">
<Setter Property="Template" Value="{StaticResource Template2}" />
</DataTrigger>
</Style.Triggers>