是否可以共享DataTrigger?

3

我有一个在XAML中定义的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中定义它并给它一个key,但是我如何在我的其余XAML中引用它呢?

2个回答

4
作为对自己帖子的评论,我刚刚发现了更好的方法来做到这一点 - 我应该使用内置的BooleanToVisibilityConverter,然后我只需要这样做:
<Window.Resources>
    <BooleanToVisibilityConverter x:Key="BoolToVis" />
</Window.Resources>

then...

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

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


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}"/>

我认为这不是一个理想的答案,因为样式应该留给真正的样式,而不是数据驱动的逻辑。如果您决定稍后为整个应用程序设置样式,则会遇到问题;您必须提供合并样式和逻辑行为的特殊样式情况。 - Daniel Jennings
是的,我同意 - 这就是我想要避免的 - 我想分享 DataTrigger,而不是样式本身。 - Craig Shearer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接