Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 是否可以共享数据触发器?_.net_Wpf_Xaml_Datatrigger - Fatal编程技术网

.net 是否可以共享数据触发器?

.net 是否可以共享数据触发器?,.net,wpf,xaml,datatrigger,.net,Wpf,Xaml,Datatrigger,我在XAML中定义了一个DataTrigger,我想在几个地方使用它。是否可以将其定义为资源,然后共享 这是我的扳机: <TextBlock.Style> <Style> <Style.Triggers> <DataTrigger Binding="{Binding HasCurrentTest}" Value="True"> <Setter Property="

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

如果样式在Windows中。具有键的资源,每个元素都可以像这样将其添加到自己的样式中

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


这是一个更好的解决方案

我不认为这是一个更好的答案,因为样式应该留给真正的样式,而不是数据驱动的逻辑。如果您以后决定对整个应用程序进行样式化,您将在这里遇到问题;您必须提供合并样式和逻辑行为的样式的特殊情况。是的,我同意-这是我想要避免的-我想要共享DataTrigger,而不是样式本身。