WPF 我拥有树木电文控制,可以由用户直接从树眼中选择该项目,也可以点击屏幕控制。 树木观点显示,在用户定义表格中,基本上是一种形式设计器应用,所展示的内容清单。
这就是我的问题。 当用户在屏幕上点击时,便使用一种能够反映该元素的树敏度回归的方法。 然后,将IsS选定的财产归案于这一要素。 它正确地改变了树木观察中的视觉指标,并在“树木观察”中提出了选定的“ItemChanged”事件。 这完全是好的。
然而,似乎在树苗幕后的一些地方仍然认为前一项目是选定的。 因此,我得出了这一结论。 如果我选择了ElementA,在树木电文中点击它,那是正确的选择。 如果我选择ElementB,点击屏幕控制,在方案上确定IsS为ElementB树木选择的财产,那么看来它选择得当。 现在,如果我再次选择ElementA,在View树中点击它,那就没有。 尚未提出选定的活动,相反的甄选箱表明选定项目在ElementB上停留。 如果在树冠中点击ElementB,那么它也不会引起选定的ItemChanged事件,但似乎并没有更新内部国旗,因为如果我点击ElementA的树木,它就会正确处理并引起这一事件。
The only workaround that I have found for this is in the SelectedItemChanged event handler to call the Focus method for the now selected TreeViewItem. If I do this I get the expected behaviour when I select screen controls and programmatically change the selected TreeViewItem.
这不是一种可以接受的解决办法,因为它造成了重点变化的浮标。 当我选择我的表格窗子上的项目时,重点转向树木观察控制,然后回到形式上,造成微小和轻微的拖延。
任何人都无所作为。
A. 更新
这里要求的是某些法典。 我的探索窗口是相关树木的经理。
public bool SelectItemByName(String controlName)
{
bool fReturn = false;
TreeViewItem tviToSelect = FindItemByName(_tviMaster, controlName);
if (tviToSelect != null && _tviSelectedItem != tviToSelect)
{
tviToSelect.IsSelected = true;
// Make sure the selected item is visible in the TreeView by expanding all of the parent nodes
ExpandAllParents(tviToSelect);
tviToSelect.BringIntoView();
fReturn = true;
}
return fReturn;
}
每个要素都有一个独特的标识,我作为接口不同领域的交叉参照。 当你点击屏幕控制时,它使用其标识在树情中发现ores子树。 之后,该法典按选定顺序排列。
之后,我选择了Item 改变活动 我必须包括以下一线。
_tviSelectedItem.Focus();
这确定了我最初的问题,但引进了不受欢迎的屏蔽器。
为了重新计算,我直接在树木电文中选择了ElementA,然后在形式设计师中选择一个或多个其他元素,而后者反过来又称作选择性地确定选定的项目。 所有视觉指标都表明,这项工作是有效的。 在《树木评论》中,重点介绍了新项目的变化。 在通过表格设计商接口选择任何内容之后,如果你在树冠上直接点击ElementA,那么它就没有。 它没有受到强调,也没有对选定的ItemChanged事件开火。 如果你检查了View树中选用的异构体和选用的特性,那么他们就正确地对方案选择的项目表示同情。 然而,有些地方似乎认为,ElementA仍被选定,并不承认甄选工作正在发生变化。
我不能相信其他人会这样做。 这在计生联的树木电cont中似乎是一大缺陷。 不能确定WinForms是否有同样的问题。