【问题标题】:WPF: ContentControl blocks focusing children elementsWPF:ContentControl 块聚焦子元素
【发布时间】:2014-04-09 16:19:43
【问题描述】:

我以编程方式创建以下对象(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 上。我尝试不同的变体,包括 rtb.Focusable = true; rtb.Focus();FocusManager.SetFocusedElement(XXX, rtb); 与不同的元素 XXX(cc、gr、MainGrid、this)。没有什么帮助。

同时,如果我删除带有 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 作为来自另一个表单的输入(因此,实际上我没有创建实例,但我将输入转换为 ContentControl:cc=(ContentControl)input)。所以我无法摆脱它。

您能否建议如何设置rtb 焦点?

非常感谢您的帮助!

【问题讨论】:

标签: c# wpf wpf-controls focus contentcontrol


【解决方案1】:

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

 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

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2012-02-27
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多