HandyControl TagContainer

 tag 关闭时 无法获取到要关闭的标签

于是改写一下TagContainer

复制代码
   public class TagContainer1 : ItemsControl
    {
        public TagContainer1()
        {
            AddHandler(HandyControl.Controls.Tag.ClosedEvent, new RoutedEventHandler(Tag_OnClosed));
        }

        public object CloseTag;
        private void Tag_OnClosed(object sender, RoutedEventArgs e)
        {
            if (e.OriginalSource is HandyControl.Controls.Tag Tag1)
            {
                CloseTag = null;
                var r = ShowMsgUtil.Question($"确定删除[{Tag1.Content}]吗?");
                if (r != MessageBoxResult.Yes) return;
                Tag1.Hide();
                CloseTag = Tag1.DataContext;
                if (ItemsSource == null)
                {
                    Items.Remove(Tag1);
                }
                else
                {
                    var item = ItemContainerGenerator.ItemFromContainer(Tag1);
                    GetActualList()?.Remove(item);
                    Items.Refresh();
                }
            }
        }

        internal IList GetActualList()
        {
            IList list;
            if (ItemsSource != null)
            {
                list = ItemsSource as IList;
            }
            else
            {
                list = Items;
            }

            return list;
        }

        protected override DependencyObject GetContainerForItemOverride() => new HandyControl.Controls.Tag();

        protected override bool IsItemItsOwnContainerOverride(object item) => item is HandyControl.Controls.Tag;
    }
复制代码

 

posted @   simadi  阅读(100)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-10-08 Python使用阿里云镜像
2017-10-08 SQLCE数据工具(Flyhoward Ltd SDF Viewer)
点击右上角即可分享
微信分享提示