You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF中通过子控件修改父控件属性的实现方案

解决方案

你可以通过在Grid的Style中使用DataTrigger来实现需求——因为Style内的Setter无法直接通过TargetName引用外部元素,转而通过绑定目标TextBox的IsFocused属性来触发Grid的背景色变化。以下是完整的XAML实现:

<Grid x:Name="grid">
    <Grid.Style>
        <Style TargetType="Grid">
            <!-- 默认背景色可根据需求调整 -->
            <Setter Property="Background" Value="Transparent"/>
            <Style.Triggers>
                <!-- 当txt1获得焦点时,Grid背景设为红色 -->
                <DataTrigger Binding="{Binding ElementName=txt1, Path=IsFocused}" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
                <!-- 当txt2获得焦点时,Grid背景设为绿色 -->
                <DataTrigger Binding="{Binding ElementName=txt2, Path=IsFocused}" Value="True">
                    <Setter Property="Background" Value="Green"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Style>
    <StackPanel>
        <TextBox Width="300" Height="40" x:Name="txt1"/>
        <TextBox Width="300" Height="40" x:Name="txt2"/>
    </StackPanel>
</Grid>

说明

  • 将触发器逻辑从TextBox的Style转移到Grid自身的Style中,避开了跨元素引用的限制。
  • 通过ElementName绑定到目标TextBox的IsFocused属性,当属性值为True时触发对应的背景色设置。
  • 可根据实际需求修改默认的Background值,比如设置为白色或其他颜色。

内容的提问来源于stack exchange,提问作者Vimal CK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:13:12