WPF:ContentControl阻止聚焦儿童元素

时间:2014-03-06 19:50:49

标签: c# wpf wpf-controls focus contentcontrol

我以编程方式创建以下对象(MainGrid是窗口上的主网格):

        ContentControl cc = new ContentControl();
        Grid gr = new Grid();
        RichTextBox rtb = new RichTextBox();
        MainGrid.Children.Add(cc);
        cc.Content = gr;
        gr.Children.Add(rtb);            

然后我尝试将注意力集中在RichTextBox上。我尝试使用不同元素XXX(cc,gr,MainGrid,this)的不同变体,包括rtb.Focusable = true; rtb.Focus();FocusManager.SetFocusedElement(XXX, rtb);。什么都没有帮助。

同时,如果我使用ContentControl删除图层,那么它可以正常工作:

        Grid gr = new Grid();
        RichTextBox rtb = new RichTextBox();
        MainGrid.Children.Add(gr);
        cc.Content = gr;
        gr.Children.Add(rtb); rtb.Focus();

所以看起来ContentControl会导致RichTextBox无法集中注意力的问题。

不幸的是,我从另一个表单接收此ContentControl作为输入(因此,实际上我不创建实例,但我将输入转换为ContentControlcc=(ContentControl)input)。所以我无法摆脱这个。

您能否提出如何设置rtb重点?

的建议

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

试试这个。在窗口加载的事件中运行它。

 void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        ContentControl cc = new ContentControl();
        Grid gr = new Grid();
        RichTextBox rtb = new RichTextBox();
        MainGrid.Children.Add(cc);
        cc.Content = gr;
        gr.Children.Add(rtb);
        FocusManager.SetFocusedElement(MainGrid, rtb);
    }

访问此处了解详情:FocusManager.SetFocusedElement