首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF Style.Trigger

WPF Style.Trigger
EN

Stack Overflow用户
提问于 2009-10-06 01:53:57
回答 3查看 1.9K关注 0票数 1

有人能告诉我为什么这个触发器不起作用:

代码语言:javascript
复制
<!--Style-->
<Style x:Key="Test" TargetType="{x:Type Expander}">
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="false">
                    <Setter Property="IsExpanded" Value="false"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>

<!-- Syle applyed in expander -->
<Expander Header="Expander" Margin="40,89,118,0" Name="expander1" Height="23" VerticalAlignment="Top" >
            <Grid>
                <Ellipse Height="100" Margin="86,0,-8,-58" Name="ellipse1" Stroke="Black" VerticalAlignment="Bottom" />        
            </Grid>
        </Expander>

<!-- Code Behind -->
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.expander1.IsEnabled = false;
        }

我试过其他的方法,但都没有成功。当扩展器被禁用时,有另一种方法来折叠内容。

EN

回答 3

Stack Overflow用户

发布于 2009-10-06 01:56:56

您需要将样式应用于Expander,如下所示:

代码语言:javascript
复制
<Expander Header="Expander" Name="expander1" Style="{StaticResource Test}" >
...
</Expander>

如果您不想显式地应用样式,那么不要声明x:Key="Test",并且与该资源相同作用域中的所有扩展器(即,如果在<Page.Resources>中声明为x:Key="Test",则该特定页面中的所有扩展器)都将继承该样式。

票数 1
EN

Stack Overflow用户

发布于 2009-10-06 02:13:59

谢谢,但是我忘记了你提到的代码块。我在Style标签中添加了一个引用,问题仍然存在。

票数 0
EN

Stack Overflow用户

发布于 2009-10-06 09:18:07

问题是,当用户单击扩展器时,会设置IsExpanded "local value“,该值优先于触发器。有关依赖项属性值优先级的详细信息,请参见this msdn page

一种可能的解决方案是重写整个Expander控件模板,在模板的触发器中添加一个触发器,以便在IsEnabled为false时隐藏“扩展”区域(默认模板仅在IsExpanded为false时执行此操作)。您可以使用Blend获得默认模板,方法是在窗口上添加一个扩展器,右键单击它,然后在上下文菜单中选择Edit template > Edit a copy。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1523252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档