我有一个datagrid
,其中一个DatagridTemplateColumn
和一些DataGridTexColumn
。
在DatagridTemplateColumn
中,我将一个按钮插入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
。
答案 0 :(得分:0)
我尝试使用复选框,但是当我循环查看是否选中了复选框时,系统在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是我在数据网格上看到的行数