为了账号安全,请及时绑定邮箱和手机立即绑定

C# 中带有 IExpandCollapseProvider 的自定义

C# 中带有 IExpandCollapseProvider 的自定义

C#
函数式编程 2021-07-08 18:33:26
我们使用 AutomationUIClient 控制台应用程序来测试我们的 WPF 应用程序。我们在 WPF 应用程序中使用 ISelectionProvider 和 IExpandCollapseProvider 设置了一个自定义类 TreeItemAutomationPeer如果自动化应用程序控制台使用此对象,则保留所有者(在我的情况下为 TreeItem),因此它会泄漏...我们添加了最后一个方法 GetChildrenCore() 来防止 Children 的内存泄漏。    public class TreeItemAutomationPeer : FrameworkElementAutomationPeer, ISelectionItemProvider, IExpandCollapseProvider{    private readonly TreeItem _treeItem;    public TreeItemAutomationPeer(TreeItem treeItem)        : base(treeItem)    {        _treeItem = treeItem;    }    public override object GetPattern(PatternInterface patternInterface)    {        if (patternInterface == PatternInterface.SelectionItem ||            patternInterface == PatternInterface.ExpandCollapse)            return this;        return base.GetPattern(patternInterface);    }    protected override string GetClassNameCore()    {        return "TreeItem";    }    protected override AutomationControlType GetAutomationControlTypeCore()    {        //return AutomationControlType.Tree;        return AutomationControlType.Custom;    }    #region ISelectionItemProvider    public IRawElementProviderSimple SelectionContainer    {        get { return _treeItem.SelectionContainer; }    }    public bool IsSelected { get { return _treeItem.Item.IsSelected; } }    public void AddToSelection()    {        _treeItem.Item.IsSelected = true;        ItemHelper.SelectItem(_treeItem, _treeItem.Item);    }    public void RemoveFromSelection()    {        _treeItem.Item.IsSelected = false;    }    public void Select()    {        if (_treeItem.Item.IsSelected)            RemoveFromSelection();        else AddToSelection();    }    #endregion    #region IExpandCollapseProvider    public ExpandCollapseState ExpandCollapseState    {        get        {            return _treeItem.Item.IsExpanded                ? ExpandCollapseState.Expanded                : ExpandCollapseState.Collapsed;        }    }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信