2010-08-17 59 views
0

我有这样的风格在WPFWPF自定义样式,通过绑定参数

<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> 

我想在这样的方式

<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> 

我在代码隐藏分配configControl.DataContext我TabItem的使用它。

当我以这种方式使用它(与ControlTemplate数据触发器中的确切绑定) - 它的工作原理。但是我想要合格不同的风格绑定路径,当在目标项目中使用它。据我了解,我可以通过TemplateBinding做到这一点,但我找不到如何?

我可以做几个相同的样式与每一个绑定定义,但我想找到一种方法如何简化它,这样我就可以写水木清华这样的:

<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> 

所以采取这种路径,并决定是否根据传递的值启用或禁用每个此选项卡项目。

回答

1

如果我正确理解你的问题,你也许可以在你的风格与触发器来完成这个

类似以下内容:

<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>