2008-11-07 109 views
2

我在我的XAML中定义了一个DataTrigger,我想在几个地方使用它。是否有可能将其定义为资源然后共享?是否可以共享DataTrigger?

这里是我的触发器:

<TextBlock.Style> 
    <Style> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding HasCurrentTest}" Value="True"> 
       <Setter Property="TextBlock.Visibility" Value="Hidden" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</TextBlock.Style> 

虽然我可以在我的Window.Resources定义这一点,并给它一个关键,我怎么是指它在我的XAML的休息吗?

回答

1

如果样式位于Windows.Resources中并带有一个键,则每个元素都可以像这样将其添加到自己的样式中。

<Window.Resources> 
    <Style x:Key="YourStyleKey"> 
     <!-- Your Style --> 
    </Style> 
</Window.Resources> 

<TextBox Text="SomeText" Style="{StaticResource YourStyleKey}"/> 
<TextBox Text="SomeOtherText" Style="{StaticResource YourStyleKey}"/> 
+0

我不认为这是一个可取的答案,因为造型应留给真正的造型,而不是数据驱动的逻辑。如果您稍后决定对整个应用程序进行设计,那么您会遇到问题;您必须提供合并样式和逻辑行为的特殊样式。 – 2008-11-07 00:59:24

4

以我个人的信息的评论中,我刚刚看到一个更好的方法来做到这一点无论如何 - 我应该使用内置BooleanToVisibilityConverter,然后我可以只是这样做:

<Window.Resources> 
    <BooleanToVisibilityConverter x:Key="BoolToVis" /> 
</Window.Resources> 

然后...

<TextBlock Visibility="{Binding HasNoCurrentTest, 
      Converter={StaticResource BoolToVis}}" /> 

这是一个更好的解决方案!

相关问题