我以编程方式创建以下对象(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作为输入(因此,实际上我不创建实例,但我将输入转换为ContentControl
:cc=(ContentControl)input
)。所以我无法摆脱这个。
您能否提出如何设置rtb
重点?
非常感谢您的帮助!
答案 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