[英]How To Control Keyboard Focus Inside a UserControl
我有一個簡單的UserControl
其中包含一些TextBlock
。 另外,我在StackPanel
還有一些UserControl
,通常當我按箭頭鍵時,鍵盤焦點會在UserControl
之間移動,這就是我不希望的行為。
我想處理UserControl
內的箭頭鍵按下並停止鍵盤導航的正常行為,就像TextBox
。 我怎樣才能做到這一點?
<StackPanel >
<dtp:DatePicker VerticalAlignment="Top"/> <!-- When I press down arrow key on this element, keyboard navigation moves to next element-->
<dtp:DatePicker VerticalAlignment="Top" DisplayType="DateOnly"/>
<dtp:DatePicker VerticalAlignment="Top" DisplayType="TimeOnly"/>
<dtp:DatePicker VerticalAlignment="Top" HasSeconds="False"/>
<dtp:DatePicker VerticalAlignment="Top" DisplayType="DateOnly" HasSeconds="False"/>
<dtp:DatePicker VerticalAlignment="Top" DisplayType="TimeOnly" HasSeconds="False"/>
</StackPanel>
通常,對於僅位於StackPanel內部的控件,簡單的控件在按箭頭鍵時不會失去焦點。 您可以通過這個小測試來嘗試一下。
<StackPanel>
<DatePicker/>
<DatePicker/>
<DatePicker/>
</StackPanel>
也許您的問題不在dtp:DatePicker
控件之外。 也許您正在將StackPanel
放在ItemTemplate
?
無論如何,您可以嘗試使用PreviewKeyUp
事件中和箭頭鍵,如下所示:
<dtp:DatePicker PreviewKeyUp="OnPreviewKeyUp"/>
private void OnPreviewKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Up || e.Key == Key.Down)
e.Handled = true;
}
或者,您可以嘗試在導航模式下放置導航約束:
<dtp:DatePicker KeyboardNavigation.DirectionalNavigation="None"
KeyboardNavigation.TabNavigation="None"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.