WPF 数据触发器

WPF Data Trigger

你好我只是想知道我是否能得到一些帮助,我在让数据触发器工作时遇到了很多麻烦,如果我删除数据触发器并将阴影放置为 setter作品。但我希望能够为用户提供打开和关闭阴影的选项,所以我认为数据触发器就是答案。

基本上我想在我的所有控件样式中添加数据触发器,并且能够将 fancyGraphics BOOL 更改为 TRUE 或 FALSE 并调整每个控件的阴影。

提前致谢。

这是我的 XAML

<sys:Boolean x:Key="fancyGraphics" >True</sys:Boolean>

<Style TargetType="{x:Type Button}">
    <Setter Property="Background" Value="#EEE"></Setter>
    <Setter Property="Foreground" Value="#555"></Setter>

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">

                <Border Background="{TemplateBinding Background}" BorderThickness="1" BorderBrush="#DDD">
                    <Grid>
                        <ContentPresenter x:Name="MyContentPresenter" Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0" />
                    </Grid>
                </Border>

                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" Value="#333"></Setter>
                        <Setter Property="BorderBrush" Value="#888"></Setter>
                    </Trigger>

                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

    <Style.Triggers>
        <DataTrigger Binding="{Binding Path=fancyGraphics}" Value="True">
            <Setter Property="Effect">
                <Setter.Value>
                    <DropShadowEffect BlurRadius="20"
                              Opacity="0.5"
                              ShadowDepth="0"
                              Color="#111" />
                </Setter.Value>
            </Setter>
        </DataTrigger>
    </Style.Triggers>
</Style>

DataTrigger 中的绑定查找名为 fancyGraphics 的 属性。但是,fancyGraphics 是静态资源。您应该这样定义绑定:

<DataTrigger Binding="{Binding Source={StaticResource fancyGraphics}}" Value="True">
    <Setter Property="Effect">
        <Setter.Value>
            <DropShadowEffect BlurRadius="20"
                              Opacity="0.5"
                              ShadowDepth="0"
                              Color="#111" />
        </Setter.Value>
    </Setter>
</DataTrigger>