gpt4 book ai didi

wpf - 当面板中的元素具有焦点时更改 WPF StackPanel 背景颜色

转载 作者:行者123 更新时间:2023-12-01 10:12:59 24 4
gpt4 key购买 nike

如果我在 StackPanel 中有一组控件,当 StackPanel 中的任何控件获得焦点时,是否有一种通用方法可以更改堆栈面板的背景? (并且当 StackPanel 中没有控件具有焦点时,显然将背景切换回来)。下面的代码对我有用,但如果有一个通用的方法来完成这项任务,而不是在我的页面中列出每个 StackPanel 中的每个控件,那就太好了。

谢谢!

<StackPanel Margin="5">
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsFocused, ElementName=chkOccupiedByMortgagor}" Value="true">
<Setter Property="Background" Value="Gray" />
<Setter Property="Opacity" Value=".5" />
</DataTrigger>
<DataTrigger Binding="{Binding IsFocused, ElementName=chkOccupiedByNewOwner}" Value="true">
<Setter Property="Background" Value="Gray" />
<Setter Property="Opacity" Value=".5" />
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<CheckBox Margin="2" x:Name="chkOccupiedByMortgagor">Mortgagor</CheckBox>
<CheckBox Margin="2" x:Name="chkOccupiedByNewOwner">New Owner</CheckBox>
<CheckBox Margin="2" x:Name="chkOccupiedByTenant">Tenant</CheckBox>
<CheckBox Margin="2" x:Name="chkOccupiedByUnknownOccupant">Unknown Occupant</CheckBox>
</StackPanel>

最佳答案

是的。你可以这样做。只需使用 IsKeyboardFocusWithin触发器的属性,如下所示:

<StackPanel Margin="5">
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsKeyboardFocusWithin}" Value="True">
<Setter Property="Background" Value="Gray" />
<Setter Property="Opacity" Value=".5" />
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<CheckBox Margin="2">Mortgagor</CheckBox>
<CheckBox Margin="2">New Owner</CheckBox>
<CheckBox Margin="2">Tenant</CheckBox>
<CheckBox Margin="2">Unknown Occupant</CheckBox>
</StackPanel>

请记住,您需要告诉触发器在同一元素中查找属性,因此,RelativeSource={RelativeSource Self}。或者,您也可以命名堆栈面板并使用此 xaml:

<StackPanel Margin="5" x:Name="stackPanel">
...
<DataTrigger Binding="{Binding ElementName=stackPanel, Path=IsKeyboardFocusWithin}" Value="True">
...

关于wpf - 当面板中的元素具有焦点时更改 WPF StackPanel 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3815555/

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