找回密码
 立即注册

QQ登录

只需一步,快速开始

Csss

注册会员

2

主题

3

帖子

11

积分

注册会员

积分
11
  • 49

    金币

  • 2

    主题

  • 3

    帖子

最新发帖
Csss
注册会员   /  发表于:2022-8-11 09:19  /   查看:3223  /  回复:3
1金币
同通过如下代码动态添加了Button,但是点击事件点击没有生效,请问是什么原因呢        

    Column item = new Column
            {
                Header = header,
                IsReadOnly = true,
                Binding = new Binding(path),
                Width = new GridLength(whidth),
                HorizontalAlignment = HorizontalAlignment.Center,
                HeaderHorizontalAlignment = HorizontalAlignment.Center
            };
            if ("操作".Equals(header))
            {


                DataGridTemplateColumn dataGridTemplateColumn = new DataGridTemplateColumn();
                dataGridTemplateColumn.Header = "操作";
                dataGridTemplateColumn.Width = new DataGridLength(1, DataGridLengthUnitType.Star);


                //Grid分列
                FrameworkElementFactory gridFactory = new FrameworkElementFactory(typeof(Grid));
                FrameworkElementFactory col1 = new FrameworkElementFactory(typeof(ColumnDefinition));
                FrameworkElementFactory col2 = new FrameworkElementFactory(typeof(ColumnDefinition));

                col1.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Star));
                col2.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Star));
                gridFactory.AppendChild(col1);
                gridFactory.AppendChild(col2);

                //添加两个Button
                FrameworkElementFactory btn1Factory = new FrameworkElementFactory(typeof(Button));
                btn1Factory.SetValue(Button.StyleProperty, Resources["ListEditButton"] as Style);
                btn1Factory.SetValue(Button.MarginProperty, new Thickness(0, 0, 5, 0));
                //添加事件
                btn1Factory.AddHandler(Button.ClickEvent, new RoutedEventHandler(ModifyData_Click));

                FrameworkElementFactory btn2Factory = new FrameworkElementFactory(typeof(Button));
                btn2Factory.SetValue(Button.StyleProperty, Resources["ListDeleteButton"] as Style);
                btn2Factory.AddHandler(Button.ClickEvent, new RoutedEventHandler(DeleteData_Click));
                btn2Factory.SetValue(Grid.ColumnProperty, 1);


                gridFactory.AppendChild(btn1Factory);
                gridFactory.AppendChild(btn2Factory);
                //关键代码
                DataTemplate cellTemplate1 = new DataTemplate();
                cellTemplate1.VisualTree = gridFactory;
                Trigger trigger = new Trigger();
                cellTemplate1.Seal();
                dataGridTemplateColumn.CellTemplate = cellTemplate1;
                item.CellTemplate = cellTemplate1;
            }
            return item;

3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-11 11:14:52
沙发
你这个代码是wpf的吧,用的是哪个C1控件,麻烦上传一个能重现问题的demo,我帮你看一下原因
回复 使用道具 举报
Csss
注册会员   /  发表于:2022-8-11 15:54:51
板凳
我用的是C1FlexGrid,我的需求是在每一行的列头添加两个Button,一个编辑一个删除,直接用 标签形式来布局是没有问题的,但是现在是需要动态生成c1FlexGrid 控件并生成Button,这样就点击不了,点击的时候进入不到对应的事件方法当中去
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-11 18:52:14
地板
问题可以重现,需要调研一下原因,然后给你回复,这个帖子暂时保留处理
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部