[英]WPF Style.Trigger
有人可以告诉我为什么此触发器不起作用:
<!--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;
}
我以其他方式尝试,但未成功。.禁用扩展器时,还有另一种折叠内容的方法。
您需要将样式应用于Expander,如下所示:
<Expander Header="Expander" Name="expander1" Style="{StaticResource Test}" >
...
</Expander>
如果您不想显式应用样式,则不要声明x:Key="Test"
,也不要声明与该资源在同一范围内的所有Expander(即,如果您声明x:Key="Test"
<Page.Resources>
x:Key="Test"
将继承该样式。
谢谢,但是我忘记了您提到的代码块。 我在样式标签中添加了参考,问题仍然存在。
问题是,当用户单击扩展器时,将设置IsExpanded“本地值”,该优先级高于触发器。 有关依赖项属性值优先级的更多信息,请参见此msdn页面 。
一种可能的解决方案是重写整个Expander控件模板,如果IsEnabled
为false,则向模板的触发器添加一个触发器,以隐藏“扩展”区域(默认模板仅在IsExpanded
为false时才这样做)。 您可以使用Blend来获取默认模板,方法是在窗口上添加扩展器,右键单击它,然后在上下文菜单中选择“编辑模板”>“编辑副本”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.