【发布时间】:2013-08-26 10:02:27
【问题描述】:
我在UserControl遇到了一个Focus相关的问题:
假设我们有一个这样的 UserControl:
<UserControl x:Class="_20130826.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<ListBox>
<ListBoxItem>
<TextBlock Text="text1" />
</ListBoxItem>
<ListBoxItem>
<TextBlock Text="text2" />
</ListBoxItem>
<ListBoxItem>
<TextBlock Text="text3" />
</ListBoxItem>
<ListBoxItem>
<TextBlock Text="text4" />
</ListBoxItem>
</ListBox>
</StackPanel>
</UserControl>
而MainWindow.xaml 是这样的:
<Window x:Class="_20130826.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:temp="clr-namespace:_20130826"
Title="MainWindow">
<StackPanel>
<Button Content="Deactive UserControl" />
<StackPanel>
<Button Name="Button1" Content="Active UserControl" />
<ContentControl>
<temp:UserControl1 />
</ContentControl>
</StackPanel>
</StackPanel>
</Window>
第一步:点击
text1TextBlock里面UserControl,默认 背景更改为更深。第二步:点击'
Deactive UserControl'按钮,让text1背景 转为较轻。第三步:点击“
Active UserControl”按钮,然后...
我希望将text1 背景更改为更深,这意味着 UserControl 已被聚焦/激活。
我怎样才能做到这一点?
【问题讨论】:
-
不确定我是否遵循此权利,但您的
Button("Active UserControl") 实际上不在您的UserControl内,那么为什么您希望 userControl 在按下按钮时获得焦点?现在这两个按钮只属于MainWindow。我在这里错过了什么吗? -
感谢@Viv,实际上完整的场景是这样的:我们在 ToolWindow 中有一个用户控件,我们想在用户激活 ToolWindow 时激活用户控件,现在用户控件没有效果,如果用户做到了。
-
好的,所以您希望
UserControl在“Active UserControl”按钮被按下时获得焦点? -
@Viv,是的,就是这样。
标签: wpf xaml user-controls