我在WPF上遇到ComboBox
控制问题。
我尝试将IsTabStop
属性设置为可控,但它无法按预期工作。
如果ComboBox
无法编辑,IsTabStop
可以正常使用,但如果ComboBox
可编辑,则始终会从键盘导航中获得焦点。 IsTabStop = false
无效!
此外,当ComboBox
可编辑且IsTabStop
为真时,键盘导航到上一个控件“已锁定”...“Shift + Tab”不起作用!
这是WPF错误吗?有没有解决方法?
我正在使用.Net 4.0。
这是一个例子......
<Window
x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="250"
Width="600">
<StackPanel
Orientation="Horizontal"
VerticalAlignment="Center">
<TextBox
Width="50"
IsTabStop="True">
</TextBox>
<ComboBox
Name="cmb1"
Margin="10,0,0,0"
Width="50"
IsEditable="True"
IsTabStop="False">
</ComboBox>
<DatePicker
Name="dp1"
Margin="10,0,0,0"
Width="50"
IsTabStop="True">
</DatePicker>
<TextBox
Margin="10,0,0,0"
Width="50"
IsTabStop="False">
</TextBox>
<ComboBox
Name="cmb2"
Margin="10,0,0,0"
Width="50"
IsTabStop="False">
</ComboBox>
<ComboBox
Name="cmb3"
Margin="10,0,0,0"
Width="50"
IsEditable="True"
IsTabStop="True">
</ComboBox>
</StackPanel>
</Window>
尝试使用选项卡从第一个文本框导航到最后一个组合框...“cmb1”同时使用IsTabStop = False,“cmb2”是好的因为它不可编辑,在“cmb3”上它不可能返回到之前的控件Shift + Tab键。
DatePicker似乎也有同样的问题。
答案 0 :(得分:5)
有点晚了,但前几天我看到了同样的问题。我发现KeyboardNavigation.TabNavigation="None"
解决了这个问题。
答案 1 :(得分:2)
是的,似乎是ComboBox的问题,有人用microsoft提出了它:
Have a look here。它似乎有一个解决方法。
这是一种解决方法。在窗口/控件的Loaded事件中放置此代码:
var textBox = myCbo.Template.FindName("PART_EditableTextBox", myCbo) as TextBox;
if (textBox != null)
textBox.IsTabStop = myCbo.IsTabStop;
将myCbo更改为组合框名称。