C# WPF数据触发器

C# WPF数据触发器,c#,wpf,xaml,datatrigger,C#,Wpf,Xaml,Datatrigger,嗨,我只是想知道我是否能得到一些帮助,我在让数据触发器工作时遇到了很多麻烦,如果我移除数据触发器并像setter一样放置阴影,它就会工作。但是我希望能够给用户提供打开和关闭阴影的选项,所以我认为数据触发器就是答案 基本上,我想在我的控件样式中添加数据触发器,只需将fancyGraphics BOOL更改为TRUE或FALSE,并调整每个控件的阴影 提前谢谢 这是我的XAML <sys:Boolean x:Key="fancyGraphics" >True</sys:Boolea

嗨,我只是想知道我是否能得到一些帮助,我在让数据触发器工作时遇到了很多麻烦,如果我移除数据触发器并像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>
True

数据触发器中的绑定查找名为
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>


我在一个按钮内尝试了你的风格,只是将
更改为
,成为了
fancyGraphics
datacontext的一个属性,并为我工作了这么多!,我以前尝试过静态资源,但我错过了源lol,它现在可以工作了。