如何使用C#而不是XAML动态地将Checkbox添加到Datagrid标头?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用C#而不是XAML动态地将Checkbox添加到Datagrid标头?相关的知识,希望对你有一定的参考价值。

 private void gridView_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    {
        if (e.PropertyName == "code" && rdbCode.IsChecked == true)
        {
            e.Column.Header = "Acct Code";
        }
        else if (e.PropertyName == "code" && rdbPart.IsChecked == true)
        {
            e.Column.MaxWidth = 0;
        }

        if (e.PropertyName == "um")
        {
            e.Column.MaxWidth = 0;
        }

        if (e.PropertyName == "part" && rdbPart.IsChecked == true)
        {
            e.Column.Header = "Part ID";
        }
        else if (e.PropertyName == "part" && rdbCode.IsChecked == true)
        {
            e.Column.MaxWidth = 0;
        }
    }

我知道我可以使用XAML向Datagrid标头添加一个复选框,但是我可以在AutoGeneratingColumn事件期间使用C#添加一个吗?我使用相同的Datagrid进行不同的搜索,并使用不同的列表动态填充网格。我需要能够在添加数据时向标题添加“全部检查”复选框,而不是已经格式化。

答案

可能它可以这样做:

private void DataGrid_OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.PropertyName == "Name")
    {
        e.Column.Header = new CheckBox { Content = "Check all" };
    }
}

结果:

The result

通常,我们在xaml中可以做的所有事情也可以在代码中完成

以上是关于如何使用C#而不是XAML动态地将Checkbox添加到Datagrid标头?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将 XAML 文件移动到文件夹中?

如何使用 DB2 sql 代码动态地将列转置为表的行,其中列可能会随着时间的推移而增加且无需更改代码?

如何在 C#/XAML Metro App 中使用 HttpWebRequest(或)HttpClient 进行同步服务调用?

如何将CheckBox与其内容对齐?

如何更有效地将嵌套列表扁平化为一个列表而不是使用 unlist 方法?

如何在 C# 中找到 XAML 元素的名称?