【发布时间】:2014-12-05 22:09:16
【问题描述】:
在 WPF(MVVM,无代码隐藏)中,假设我有以下 xaml:
<StackPanel>
<Button>Normal 1</Button>
<Button>Special</Button> <!--This button should not tab focus, but still focus via arrow keys-->
<Button>Normal 2</Button>
</StackPanel>
默认情况下,您可以 (1) 按钮之间的制表符或 (2) 按钮之间的向上/向下箭头。我想让其中一个按钮 - Special 按钮 - not 可通过选项卡聚焦,但仍可通过向上/向下聚焦。我试过IsTabStop="False",但这也阻止了通过定向导航(上/下箭头)聚焦该按钮。
如何从标签导航中删除单个按钮,同时继续允许定向导航?制表符和箭头应该不影响所有其他控件。
我尝试了 IsTabStop、KeyboardNavigation.TabNavigation 和 KeyboardNavigation.DirectionalNavigation 的组合,但无济于事。也许我还没有找到合适的组合。或者也许还有另一种方法。想法?
编辑:好的,我正在添加赏金。需要明确的是,我正在寻找一个 MVVM,没有代码隐藏方式来装饰控件(例如,通过样式、附加属性、附加行为等),以便将其从选项卡顺序中删除,同时保持有效的方向导航目标。将控件硬编码到窗口(或类似)中是不可接受的。这需要一个通用的、可重用的解决方案。比如:<Button AllowDirectionalNavigationButPreventTabNavigation="True"/>。
【问题讨论】:
-
这应该会有所帮助:[WPF:如何在不禁用箭头键导航的情况下禁用标签导航?][1] [1]:stackoverflow.com/questions/4210659/…
-
@Joseph 我发现了这个问题,但是那个人有不同的情况(他们使用的是列表视图),并且建议的解决方案都没有解决我的确切问题。另外,公认的解决方案使用代码隐藏,并要求窗口了解其中所有控件的选项卡行为——我希望控件决定它自己的行为。
标签: wpf focus tabbing keyboard-navigation