0

我有一个 TreeView 控件,添加新节点后,我需要执行一些自定义代码(例如展开节点,使其可见,并启动开始编辑方法)。因为我希望它在 TreeView 控件的每个实例中都可用,所以我想子类化 TreeView 控件。

现在,为了让 treeview 知道何时添加新节点,它要么有一个在添加项目时触发的事件(它没有),要么有一个对执行添加新节点的命令的引用物品。

所以两个问题:

1) 有没有办法在 TreeView 中添加一个事件,每当添加树节点时都会触发该事件(我总是通过 ViewModel 的源集合添加节点) - 我找不到任何方法来做到这一点

2) 我可以向 TreeList 添加一个 AddCommand 属性,该属性将绑定到 ViewModel 的 AddCommand,然后有一些按钮或 ContextMenu 项将绑定到 TreeList.AddCommand,而不是视图模型。这种方式 TreeView 将持有对 AddCommand 的引用,但缺点是实际使用会有点奇怪。问题:我如何知道 TreeView 的 AddCommand(或任何命令,就此而言)何时执行,所以我可以在它之后触发一些自定义代码?似乎 CommandManager.AddExecutedHandler 是一个解决方案,但我无法执行它。

4

1 回答 1

0

Is this any help?

public class CustomTreeControl : TreeView
{
    ...

    // WPF only
    protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue)
    {
        base.OnItemsSourceChanged(oldValue, newValue);

        Debug.WriteLine("OnItemsSourceChanged");
    }

    // WPF + Silverlight
    protected override void OnItemsChanged(NotifyCollectionChangedEventArgs e)
    {
        base.OnItemsChanged(e);

        Debug.WriteLine("OnItemsChanged: {0}", e.Action);
    }
}
于 2012-04-29T14:37:09.827 回答