gpt4 book ai didi

wpf - Xaml:使用子控件触发器更改父控件属性

转载 作者:行者123 更新时间:2023-12-04 06:27:06 27 4
gpt4 key购买 nike

我正在尝试通过子控件上的触发器来修改父控件的属性。具体来说,我试图通过边框的子 TextBox 的 OnKeyboardFocus 触发器来修改边框的 DropShaddowEffect 的不透明度。

但是,setter 的 TargetName 会给出一个错误,即名称无法识别。

这是 XAML:

<Border x:Name="HeaderTextBoxBorder">
<Border.Effect>
<DropShadowEffect Opacity="20"/>
</Border.Effect>
<TextBox x:Name="HeaderTextBox">
<TextBox.Style>
<Style
TargetType="{x:Type TextBox}">
<!-- Attmpting to change opacity on focus -->
<Style.Triggers>
<Trigger
Property="IsKeyboardFocused"
Value="True">
<Setter
<!-- The error occurs here -->
TargetName="HeaderTextBoxBorder"
Property="Effect">
<Setter.Value>
<DropShadowEffect Opacity="100"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Border>

查看 XAML,是否有任何错误提示?

感谢您的时间。

最佳答案

Style 是一个单独的名称范围,因此您将无法通过它的名称访问您的 Border。

您需要将 Border.Effect 属性绑定(bind)到 TextBox.IsKeyboardFocused 元素并以这种方式切换不透明度,例如:

<Border.Effect>
<DropShadowEffect Opacity="{Binding ElementName=HeaderTextBox, Path=IsKeyboardFocused, Converter={StaticResource local:CustomConverter}" />
</Border.Effect>

其中 CusotmConverter 实现 IValueConverter 并返回 20 或 100,具体取决于 bool 值。

关于wpf - Xaml:使用子控件触发器更改父控件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5913654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com