wpf usercontrol的焦点问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf usercontrol的焦点问题相关的知识,希望对你有一定的参考价值。

我做了一个UserControl ,想要实现这样一个效果:

我new了3个UserControl放到一个stack里.被点击的UserControl会变长.
当点击了stack中的任意一个UserControl时,被点击的UserControl会变长,其他stack中未被点击的UserControl,如果之前被点击而变长,这一次就会还原.
换句话说,在这堆UserControl中最多只有一个UserControl会变长.

我想用焦点来实现,获得焦点的UserControl变长,失去焦点的就还原.
但是我在leftmousebuttondown事件调用了this.focus()后,获得了焦点,然后会马上失去焦点,焦点无法保持.现象就是在变长的瞬间会马上还原.

谁能告诉我wpf的焦点机制是怎么样的

参考技术A 那其实你可以在UserControl 的GotFocus和LoseFous事件去写逻辑。wpf的一个页面应该只有一个控件受到焦点的。 参考技术B 试一下 强制捕获鼠标 CaptureMouse 参考技术C 添加事件来处理吧

Wpf UserControl使用 KeyBinding,失效问题

原文:Wpf UserControl使用 KeyBinding,失效问题

我的问题根源是UserControl未获取相应焦点,在UserControl后台添加如下

 public AccountDetailView()
        {
            InitializeComponent();
            this.IsEnabledChanged +=new DependencyPropertyChangedEventHandler(AccountDetailView_IsEnabledChanged);  
        }



        private void control_detail_Loaded(object sender, RoutedEventArgs e)
        {
            tb_detail.Focusable = true;
            Keyboard.Focus(this);
        }




        void AccountDetailView_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if (!Convert.ToBoolean(e.NewValue)) return;
            this.Focusable = true;
            Keyboard.Focus(this);
        }

以上是关于wpf usercontrol的焦点问题的主要内容,如果未能解决你的问题,请参考以下文章

WPF UserControl检测LostFocus忽略儿童

Wpf UserControl使用 KeyBinding,失效问题

WPF 自定义搜索框

WPF - 带OpacityMask / VisualBrush的边框:内存泄漏

WPF 文本框不会触发依赖属性设置器

WPF 快捷键 用户控件 绑定无反应原因