我正在使用WPF中的一个聊天窗口来托管Forms.RichTextBox。
<WindowsFormsHost x:Name="wfh">
<wf:RichTextBox x:Name="txtMain" HideSelection="False" ReadOnly="True" Multiline="True"/>
</WindowsFormsHost>
此RichTextBox
下方是常规WPF TextBox
。
<TextBox x:Name="txtSend" TextWrapping="Wrap" AcceptsReturn="True"/>
我希望键盘焦点保持在TextBox
,但仍允许用户选择WFH RichTextBox
中的文字并滚动。
我已尝试更改MouseUp
中txtMain
的键盘焦点,但是我无法滚动,并且无法使用Ctrl + C进行复制。
有什么想法吗?
答案 0 :(得分:1)
您可能需要查看此sample。如果您想要多个焦点,则必须使用FocusScope
。
链接中的示例代码
static void OnGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
IInputElement focusedElement = e.NewFocus;
for (DependencyObject d = focusedElement as DependencyObject;
d != null; d = VisualTreeHelper.GetParent(d)) {
if (FocusManager.GetIsFocusScope(d)) {
d.SetValue(FocusManager.FocusedElementProperty, focusedElement);
if (!(bool)d.GetValue(IsEnhancedFocusScopeProperty)) {
break;
}
}
}
}