通用 Windows 平台 (UWP)
一个 Microsoft 平台,用于生成和发布适用于 Windows 桌面设备的应用。
49 个问题
你好
我想将 Community Toolkit DataGrid 列标题设置为 CheckBox。
我想在 AutoGeneratingColum 事件中执行此操作。我正在尝试这样的代码:
private void AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if(e.PropertyName == "IsSelected")
{
var templateColumn = new DataGridTemplateColumn();
templateColumn.Header = new CheckBox();
var template = (DataTemplate)this.Resources["dataTemplate"];
templateColumn.CellTemplate = template;
e.Column = templateColumn;
}
}
但是代码行 “templateColumn.Header = new CheckBox();” 会导致异常。
请告诉我如何完成我的想法。
此问题由:Setting CheckBox as UWP DataGrid column header during AutoGeneratingColumn - Microsoft Q&A 总结而来
你好
欢迎来到微软问答!
下面是一个解决方法。从代码端设置 ControlTemplate
很难, 我们可以尝试在 Xaml 资源中创建新的DataGridColumnHeader
样式,并在 AutoGeneratingColumn
事件中使用该样式。
// xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
// xmlns:wctprimitives="using:Microsoft.Toolkit.Uwp.UI.Controls.Primitives"
<Grid>
<Grid.Resources>
<Style x:Name="dataGridcheckbostyle" TargetType="wctprimitives:DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="wctprimitives:DataGridColumnHeader">
<CheckBox Content="Test" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<controls:DataGrid x:Name="dataGrid1"
Height="600" Margin="12"
AutoGenerateColumns="True"
AutoGeneratingColumn="dataGrid1_AutoGeneratingColumn"
ItemsSource="{x:Bind CustomerList}">
</controls:DataGrid>
</Grid>
public sealed partial class MainPage : Page
{
public List<Customer> CustomerList= new List<Customer>();
public MainPage()
{
this.InitializeComponent();
CustomerList = new List<Customer> {
new Customer("A.", "Zero",
"12 North Third Street, Apartment 45",
false),
new Customer("B.", "One",
"34 West Fifth Street, Apartment 67",
false),
new Customer("C.", "Two",
"56 East Seventh Street, Apartment 89",
true),
new Customer("D.", "Three",
"78 South Ninth Street, Apartment 10",
true)
};
}
private void dataGrid1_AutoGeneratingColumn(object sender, Microsoft.Toolkit.Uwp.UI.Controls.DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "IsNew")
{
e.Column.HeaderStyle = dataGridcheckbostyle;
}
}
}
public class Customer
{
public String FirstName { get; set; }
public String LastName { get; set; }
public String Address { get; set; }
public Boolean IsNew { get; set; }
public Customer(String firstName, String lastName,
String address, Boolean isNew)
{
this.FirstName = firstName;
this.LastName = lastName;
this.Address = address;
this.IsNew = isNew;
}
}
谢谢。
如果答案是正确的解决方案,请点击“接受答案”并慷慨地投赞成票。如果您对此答案有其他问题,请点击“评论”。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。