每个WPF DataGrid列中的按钮
我想在每个wpf datagrid列中添加一个按钮。我的列是自动生成的,因此我没有xaml中列的定义。如何使用列的模板来实现这一点,这样我就有了列标题和右侧的按钮 编辑:每个WPF DataGrid列中的按钮,wpf,xaml,button,datagrid,Wpf,Xaml,Button,Datagrid,我想在每个wpf datagrid列中添加一个按钮。我的列是自动生成的,因此我没有xaml中列的定义。如何使用列的模板来实现这一点,这样我就有了列标题和右侧的按钮 编辑: User.myDataTable填充在模型中,工作正常。您可以使用以下样式: <DataGrid> <DataGrid.ColumnHeaderStyle> <Style TargetType="DataGridColumnHeader">
User.myDataTable填充在模型中,工作正常。您可以使用以下样式:
<DataGrid>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ColumnName}" />
<Button Content="Button" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid>
好的,效果很好,但是如何绑定到我的columnname?它们是自动创建的,并且我的datagrid的源绑定到我的模型中的datatable尝试以下操作:您可能需要将绑定从“User.myDataTable”更改为“User.myDataTable.DefaultView”只是一个注释,我通常不绑定到DataTables,所以我不熟悉这种方法。好的,但是现在我的DataGrid显示了一列文本框文本:Application.ViewModels.UserViewmodel,然后是按钮。如果datagridd已填充,则自动生成的列会溢出该文本。你有解决这个问题的办法吗?
<DataGrid>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ColumnName}" />
<Button Content="Button" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid>
use the below code:-
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
FrameworkElementFactory HeaderStackpanel = new FrameworkElementFactory(typeof(StackPanel));
FrameworkElementFactory btn = new FrameworkElementFactory(typeof(Button));
// Set the property for Button
btn.SetValue(Button.MarginProperty, new Thickness(-50, 0, 0, 0));
btn.AddHandler(Button.ClickEvent, new RoutedEventHandler(BtnClick));
// Set the Text Value to the buttons
btn.SetValue(Button.ContentProperty, strEdit);
// Append the Edit Button
HeaderStackpanel.AppendChild(btn);
DataTemplate headerTemplate = new DataTemplate();
headerTemplate.VisualTree = HeaderStackpanel;
templateColumn.HeaderTemplate = headerTemplate;