问题
外层MainWindow.xaml里有一个Container(ContentPresenter),调用一个CreateJob 页面,里面是一行行的<TextBlock>,最后一个是<DataPicker>。
因为会调用不同的子页面,这个Containner(ContentPresenter)需要写清TabNavigation的方式,这里是Local
<ContentPresenter KeyboardNavigation.TabNavigation="Local" Grid.Row="2" Content="{Binding CurrentViewModel}">
而里面这些Textblock设置了一定顺序的Index,最后一个是<DataPicker>的index是最大的。
但是这个datapicker是由一个DataTemplate组成的,其再内层是一个TextBlock和一个Button组成。
问题是KeyboardTab不会走到内层的DataPicker的Button中。
解决
1:检查内层DataPicker的DataTemplate的Button有没有设置Focusable= false
2:外层<DataPicker>要是KeyboardNavigation.TabNavigation="Continue"
<DatePicker Grid.Row="5" Grid.Column="1" Margin="10,5,0,5" Focusable="True" KeyboardNavigation.TabIndex="11" KeyboardNavigation.TabNavigation="Continue" Style="{StaticResource Base_DatePicker_Template}" Text="{Binding CurrentJob.RevisionDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" />