首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个按钮添加到WPF数据栅格中

将多个按钮添加到WPF数据栅格中
EN

Stack Overflow用户
提问于 2019-07-04 19:41:57
回答 2查看 718关注 0票数 1

我想使用后端C#而不是XAML向我的数据集的最后一列中的行添加2-3个按钮。我设法添加了一个按钮到细胞,但我有困难,再添加超过这一点。

我尝试创建一个新的FrameworkElementFactory并将其添加到列中,但它只是替换了前面的按钮,而不是添加按钮。

代码语言:javascript
复制
        DataGridTemplateColumn buttonColumn = new DataGridTemplateColumn();
        buttonColumn.Header = "Actions";
        buttonColumn.Width = 209;

        DataTemplate buttonTemplate = new DataTemplate();
        FrameworkElementFactory buttonFactory = new FrameworkElementFactory(typeof(Button));
        buttonTemplate.VisualTree = buttonFactory;

        buttonFactory.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler(Activate));
        buttonFactory.SetValue(ContentProperty, "A");
        buttonColumn.CellTemplate = buttonTemplate;

        dGrid_SavedData.Columns.Add(buttonColumn);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-05 09:37:28

无论是以编程方式还是在XAML中创建它,DataTemplate只能具有单个根元素,因此应该将VisualTree属性设置为PanelFrameworkElementFactory,并使用AppendChild方法将按钮工厂添加到面板工厂,例如:

代码语言:javascript
复制
DataGridTemplateColumn buttonColumn = new DataGridTemplateColumn();
buttonColumn.Header = "Actions";
buttonColumn.Width = 209;

DataTemplate buttonTemplate = new DataTemplate();
FrameworkElementFactory panelFactory = new FrameworkElementFactory(typeof(StackPanel));
buttonTemplate.VisualTree = panelFactory;

FrameworkElementFactory buttonAFactory = new FrameworkElementFactory(typeof(Button));
buttonAFactory.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler(Activate));
buttonAFactory.SetValue(ContentProperty, "A");

FrameworkElementFactory buttonBFactory = new FrameworkElementFactory(typeof(Button));
buttonBFactory.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler(Activate));
buttonBFactory.SetValue(ContentProperty, "B");

panelFactory.AppendChild(buttonAFactory);
panelFactory.AppendChild(buttonBFactory);

buttonColumn.CellTemplate = buttonTemplate;

dGrid_SavedData.Columns.Add(buttonColumn);
票数 1
EN

Stack Overflow用户

发布于 2019-07-04 23:49:18

所以,我在一个iPad,所以我不能给出太多的细节。首先,让我说,这是一个非常困难的方式来做到这一点,我建议几乎任何其他。但是,如果您必须完全动态地生成网格,则需要将按钮放入容器中。例如,垂直堆栈面板。然后,您可以添加任意多的按钮。祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56893549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档