English 中文(简体)
1. 更新选定树木 方案改变后的项目
原标题:Have TreeView update its SelectedItem when programmatically changed
  • 时间:2011-11-23 15:33:19
  •  标签:
  • wpf
  • treeview

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是否有同样的问题。

问题回答

每一条<代码>TreeViewItem都有一个 财产,我怀疑旧的一条 is被伪造。 每当你把新项目确当成事实时,就把它弄错。

var currentItem = treeView.ItemContainerGenerator
    .ContainerFromItem(treeView.SelectedItem) as TreeViewItem;
currentItem.IsSelected = false;

如果做不到这一点,则试图在选择新选定的项目时同时把重点放在新选定的项目上。 Don tabe, WPF也有两个重点范围: 逻辑焦点和关键板焦点。 也许需要确定两者。

treeViewItem.Focus();         // Sets Logical Focus
Keyboard.Focus(treeViewItem); // Sets Keyboard Focus




相关问题
WPF convert 2d mouse click into 3d space

I have several geometry meshes in my Viewport3D, these have bounds of (w:1800, h:500, d:25). When a user clicks in the middle of the mesh, I want the Point3D of (900, 500, 25)... How can I achieve ...

Editing a xaml icons or images

Is it possible to edit a xaml icons or images in the expression design or using other tools? Is it possible to import a xaml images (that e.g you have exported) in the expression designer for editing?...

WPF: writing smoke tests using ViewModels

I am considering to write smoke tests for our WPF application. The question that I am faced is: should we use UI automation( or some other technology that creates a UI script), or is it good enough to ...

WPF - MVVM - NHibernate Validation

Im facing a bit of an issue when trying to validate a decimal property on domain object which is bound to a textbox on the view through the viewmodel. I am using NHibernate to decorate my property on ...

How do WPF Markup Extensions raise compile errors?

Certain markup extensions raise compile errors. For example StaticExtension (x:Static) raises a compile error if the referenced class cannot be found. Anyone know the mechanism for this? Is it baked ...

WPF design-time context menu

I am trying to create a custom wpf control, I m wondering how I can add some design-time features. I ve googled and can t seem to get to my goal. So here s my simple question, how can I add an entry ...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...

热门标签