是否可以共享DataTrigger?
问题描述:
我在我的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的休息吗?
答
如果样式位于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}"/>
答
以我个人的信息的评论中,我刚刚看到一个更好的方法来做到这一点无论如何 - 我应该使用内置BooleanToVisibilityConverter,然后我可以只是这样做:
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis" />
</Window.Resources>
然后...
<TextBlock Visibility="{Binding HasNoCurrentTest,
Converter={StaticResource BoolToVis}}" />
这是一个更好的解决方案!
我不认为这是一个可取的答案,因为造型应留给真正的造型,而不是数据驱动的逻辑。如果您稍后决定对整个应用程序进行设计,那么您会遇到问题;您必须提供合并样式和逻辑行为的特殊样式。 – 2008-11-07 00:59:24