【发布时间】:2012-10-03 23:57:46
【问题描述】:
我有一个在 wpf 中使用带有 mvvm 的树视图的应用程序。 treeitem 模板包含一个文本框,供用户输入或更改字段数据。如果用户在编辑时按下制表符,我想它是否会移动到下一个可见的树项文本框并允许他们开始编辑它。这可能吗?我可以抓住 tab 键,但不知道如何移动到下一个项目
【问题讨论】:
我有一个在 wpf 中使用带有 mvvm 的树视图的应用程序。 treeitem 模板包含一个文本框,供用户输入或更改字段数据。如果用户在编辑时按下制表符,我想它是否会移动到下一个可见的树项文本框并允许他们开始编辑它。这可能吗?我可以抓住 tab 键,但不知道如何移动到下一个项目
【问题讨论】:
好的,我不确定这是最干净的方法,但我找到了一种方法,而且它似乎没有遇到速度问题,所以它现在可以工作,如果有人有的话,仍然会对更干净的答案感兴趣一。这是我所做的:
我使用了一种类似于here 的方法来获取TreeView 中所有文本框的集合。然后我将“发送者”用于 KeyDown 事件,转换为文本框,并得到它的 datacontext,这是我对该节点的视图模型。然后我使用我的整体视图模型来查找下一个可见节点的视图模型(非常容易通过两种方式绑定到“IsExpanded”)。最后,我遍历了开始时找到的所有文本框,直到我找到一个 datacontext 是下一个可见视图模型并在其上调用 Keyboard.Focus(myTextBox)。
就像我说的,似乎应该有一种更清洁的方法,但它现在可以工作......
【讨论】: