如何解决如何停止WPF控件从其父级继承效果?
我有一个带有许多子控件的WPF UserControl。根控件是一个网格。如果单击控件内的按钮,则需要对所有控件应用BlurEffect。我已经使用通过数据绑定激活的主网格上的样式解决了这个问题。
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding IsBlurred,Mode=OneWay}" Value="True">
<Setter Property="Effect">
<Setter.Value>
<BlurEffect Radius="75" KernelType="Gaussian"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
和触发它的按钮:
<Button x:Name="btnBlur" Style="{StaticResource ScanButton}" Margin="30,0" Width="150" Command="{Binding BlurCommand}">
<TextBlock Text="Blur" VerticalAlignment="Center" Margin="10,0"/>
</Button>
我的问题是,模糊按钮本身也具有模糊效果,因为它是整个网格中的子元素。该按钮还已经应用了样式,这会影响同一控件上的其他按钮。
是否有一种方法可以防止将模糊效果应用于此单个按钮,同时又将其应用于网格的所有其他子组件?
更新:我正在为应用程序使用MVVM模式,我的ViewModel对视图本身一无所知,因此无法通过代码引用特定的按钮。理想情况下,我想要一种不只对特定按钮应用或“不应用”模糊效果的方法。
我试图向按钮添加相同的样式触发器,并在触发数据绑定时将Effect属性设置为null。这是行不通的,似乎根网格的效果会覆盖在子控件级别执行的所有操作。
解决方法
根据已发布的评论,似乎无法覆盖或避免对子控件的模糊效果。
作为解决方案,我只是将数据触发代码复制粘贴到所有不同的父容器和控件中,以免影响特定的按钮。这肯定不是很优雅,因为同一触发代码在Xaml中会多次出现。
我不确定是否可以将代码放入单独的样式中,并且仍然引用/使用触发效果的数据绑定,但这可能是我在有更多时间时会尝试的方法。就目前而言,尽管解决方案很丑陋,它仍然有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。