c# - 动态更改按钮内容
问题描述
我datagrid
有一个DatagridTemplateColumn
和一些DataGridTexColumn
。
Into DatagridTemplateColumn
I 将按钮插入HeaderTemplate
并插入CellTemplate
。
在单击按钮上,HeaderTemplate
我需要将所有内容按钮都CellTemplate
更改为
XAML
<DataGridTemplateColumn>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<Button Name ="BCAll" Height="20" Width="20" Background="White" Click="BCAll_Click" Content="" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:Name="BCS">
<Button Name ="BCSing" Height="20" Width="20" Background="White" Click="BCSing_Click" Content=""/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
C#:
private void BCAll_Click(object sender, RoutedEventArgs e)
{
Button bot = (Button)sender;
if (bot.Content == "")
{
bot.Content = ((char)0x221A).ToString();
for (int i = 0; i < DTG_Can.Items.Count; i++)
{
Button CBM = DTG_Can.Columns[0].GetCellContent(DTG_Can.Items[i]) as Button;
CBM.Content = ((char)0x221A).ToString();
}
}
else
{
for (int i = 0; i < DTG_Can.Items.Count; i++)
{
Button CBM = DTG_Can.Columns[0].GetCellContent(DTG_Can.Items[i]) as Button;
CBM.Content = "";
}
}
}
在单击BCAll_click
事件时,系统会System.nullReferenceException
按指令返回CBM.Content
。
解决方案
我尝试使用复选框,但是当我循环查看是否选中了复选框时,系统在 30 次迭代后返回相同的错误。
for (int i = 0; i < DTG_Mod.Items.Count; i++)
{
drv = (DataRowView)DTG_Mod.Items.GetItemAt(i);
var item = DTG_Mod.Items[i];
var CBM = DTG_Mod.Columns[0].GetCellContent(item) as CheckBox;
if ((bool)CBM.IsChecked)
{ do something...
我看到 30 是我在数据网格上看到的行数
推荐阅读
- php - 用新行替换 \n
- sql - SQL max 函数返回 NULL 值
- flutter - 可以在 Flutter Mobx 中将 Store 作为单例导出吗?
- swiftui - SwiftUI:观察已发布对象的内部变化
- laravel - 我怎么写这个 if 函数?
- javascript - jQuery:不同文本长度的 CSS 文本动画
- python - Tkinter 标签中心文本设置文本从左上角开始
- python - 如果用户不以命令行形式输入参数,有没有办法从自定义函数返回不同变量中的输入值?
- html - 自定义 TensorflowJS 模型(从 GCP AutoML 导出)未在 HTML 部署中运行
- typescript - 如何通过 TypeScript 中的参数对象形状重载函数?