在TabItem控件上有一个TextBox项(MyTextBox).我的代码如下所示:
MyTextBox.Focus();
Keyboard.Focus(MyTextBox);
Run Code Online (Sandbox Code Playgroud)
当我通过调试器运行此代码时,我会在执行这些行后看到以下内容:
MyTextBox.IsFocused = true
MyTextBox.IsKeyboardFocused = false
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么文本框没有接收键盘焦点?它只是一个启用的标准TextBox控件.
小智 9
当您尝试将Focus设置为除了我们的coleague上面列举的内容之外的元素时,您还必须知道WPF不允许交叉线程操作.
在某些情况下,不会像在Focus方法调用案例中那样引发此异常.我为解决这个问题所做的是将所有涉及键盘焦点的代码调用到一个动作中.
此操作在控制调度程序内运行,以确保我的代码不是从UI线程以外的其他线程执行的(例如,计时器事件或从另一个线程引发的事件):
[UIElement].Dispatcher.BeginInvoke(
new Action(
delegate{
/// put your Focus code here
}
)
);
Run Code Online (Sandbox Code Playgroud)
3个重要属性必须是true
:IsVisible="True"
,Focusable="True"
。IsEnabled="True"
。
要成为可聚焦对象,Focusable和IsEnabled都必须为true。
http://msdn.microsoft.com/en-us/library/system.windows.uielement.focus.aspx
归档时间: |
|
查看次数: |
9847 次 |
最近记录: |