none
WPF自定义窗体的默认样式/模板中,如何设置Trigger RRS feed

  • 问题

  • 我设计了一个自定义控件,是一个继承自Window的窗口。

    我添加了一个依赖属性OuterMarginThickness用来容纳阴影,但是在窗口全屏的情况下希望该Thickness值为0。

    在代码中设置正常工作,而在标记中用Trigger实现则不生效:

    (Setter中对Background和CornerRadius的设置都是用来测试的)

    generic.xaml 文件中

        <Style TargetType="{x:Type local:FlatWindow}">
    
            <Setter Property="WindowStyle" Value="None"/>
            <Setter Property="AllowsTransparency" Value="True"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type local:FlatWindow}">
                    <!-- control template design part start -->
                    <!-- control template design part end -->
                        <ControlTemplate.Triggers>
                            <Trigger Property="WindowState" Value="Maximized">
                                <Setter Property="OuterMarginThickness" Value="0"/>
                                <Setter Property="CornerRadius" Value="10"/>
                                <Setter Property="Background" Value="Blue"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="WindowChrome.WindowChrome">
                <!-- window chrome setting -->
            </Setter>
            <Style.Triggers>
                <Trigger Property="WindowState" Value="Maximized">
                    <Setter Property="OuterMarginThickness" Value="0"/>
                    <Setter Property="CornerRadius" Value="10"/>
                    <Setter Property="Background" Value="Blue"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    

    如上所示,无论是Template里还是Style里,Trigger都不生效。而如果把一个EventTrigger放在Template里,则会生效。

    请问这是什么原因,我的用法有什么问题。

    2018年2月22日 7:04

答案

全部回复

  • 解决了,似乎是WPF自身的小缺陷,只要往窗体内随便放点东西就行了

    • 已建议为答案 Bob DingModerator 2018年2月22日 12:30
    • 已标记为答案 Lymim 2018年2月24日 4:41
    • 已编辑 Lymim 2018年2月24日 4:42
    2018年2月22日 12:15
  • Hi,

    很高兴你在没有任何帮助的情况下找到了答案。

    感谢你分享你的解决方案。

    请通过标记答案来关闭此线程,以便告诉其他成员看到你不在需要帮助。关闭的线程会更容易地被搜索到,当其他成员也也到同样的问题。

    感谢你的理解与合作.

    Best Regards,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年2月22日 12:35
    版主