代码如下
<DataGrid Style="{StaticResource NormalDataGridStyle}" HorizontalAlignment="Stretch" Name="myDataGrid" VerticalAlignment="Stretch" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTemplateColumn Width="90">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox Name="checkAll" Content="全选/取消" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="theCheckBox" Tag="{Binding}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="150" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="单据编号" Binding="{Binding Path=ReceiptNO}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="创建人" Binding="{Binding Path=User.FullName}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="创建时间" Binding="{Binding Path=CreateTime}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="物品类型" Binding="{Binding Purchasing_GoodsClass.ClassName}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="采购分组" Binding="{Binding OrderType,Converter={StaticResource vtos}}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="订单状态" Binding="{Binding Status,Converter={StaticResource osts}}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="总金额" Binding="{Binding Purchasing_OrderedItem,Converter={StaticResource totalprice}}" />
<DataGridTemplateColumn Width="100" Header="操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Tag="{Binding}" Style="{DynamicResource EditIconButton}" Click="btnDetail_Click" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
查找checkbox的代码如下 private void HeadCheck(object sender, RoutedEventArgs e, bool IsChecked)
{
foreach (var item in myDataGrid.ItemsSource)
{
FrameworkElement datacell = myDataGrid.Columns[0].GetCellContent(item);
if (null != datacell)
{
CheckBox cb = datacell.FindName("theCheckBox") as CheckBox; //cb为
if (cb != null)
{
MessageBox.Show("found");
}
}
}
}
<DataGrid Style="{StaticResource NormalDataGridStyle}" HorizontalAlignment="Stretch" Name="myDataGrid" VerticalAlignment="Stretch" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTemplateColumn Width="90">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox Name="checkAll" Content="全选/取消" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="theCheckBox" Tag="{Binding}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="150" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="单据编号" Binding="{Binding Path=ReceiptNO}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="创建人" Binding="{Binding Path=User.FullName}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="创建时间" Binding="{Binding Path=CreateTime}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="物品类型" Binding="{Binding Purchasing_GoodsClass.ClassName}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="采购分组" Binding="{Binding OrderType,Converter={StaticResource vtos}}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="订单状态" Binding="{Binding Status,Converter={StaticResource osts}}" />
<DataGridTextColumn Width="100" CellStyle="{StaticResource NormalDataGridCell}" HeaderStyle="{StaticResource NormalDataGridColumnHeader}" Header="总金额" Binding="{Binding Purchasing_OrderedItem,Converter={StaticResource totalprice}}" />
<DataGridTemplateColumn Width="100" Header="操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Tag="{Binding}" Style="{DynamicResource EditIconButton}" Click="btnDetail_Click" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
查找checkbox的代码如下 private void HeadCheck(object sender, RoutedEventArgs e, bool IsChecked)
{
foreach (var item in myDataGrid.ItemsSource)
{
FrameworkElement datacell = myDataGrid.Columns[0].GetCellContent(item);
if (null != datacell)
{
CheckBox cb = datacell.FindName("theCheckBox") as CheckBox; //cb为
if (cb != null)
{
MessageBox.Show("found");
}
}
}
}
解决方案 »
- 关于信息修改
- 如何实现C#和C++的通信?
- C# 问题来高手.谢谢
- C#如何实现不同进程中的窗体互斥
- C# 在网页中如何弹出输入密码提示框?另外Registry.CurrentUser得不到值?
- html源码解析不一致问题
- c#SQL数据库导出数据到Excel,详细代码最好
- 想做一个连数据库的软件,不过连接方式一直没有定下来,请教下用什么方式最好 最安全效率?
- 正则问题请教 限制字符长度与最小匹配
- 我在做一个简单的记事本程序,有很多问题出现啊,向各位高手求救
- WebBrowser如何遍历iframe中每个元素的在屏幕上的坐标?
- 怎样在IIS信息服务管理器里设置,使IIS能够获取计算机的windows凭据
你直接获取CheckBox的方法为啥不行,我也不清楚,没时间调试,只要能达到目的就行了。
但我认为,checkbox并不是datacell的子项,checkbox是通过模板加进去的,所以用FindName找不到
在MSDN的论坛上找了一段代码,好象可以达到要求public DataGridCell GetCell(int row, int column)
{
DataGridRow rowContainer = GetRow(row); if (rowContainer != null)
{
DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer); if (presenter == null)
{
myDataGrid.ScrollIntoView(rowContainer, myDataGrid.Columns[column]);
presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);
} DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column); return cell;
}
return null;
}
public DataGridRow GetRow(int index)
{
DataGridRow row = (DataGridRow)myDataGrid.ItemContainerGenerator.ContainerFromIndex(index);
if (row == null)
{
myDataGrid.UpdateLayout();
myDataGrid.ScrollIntoView(myDataGrid.Items[index]);
row = (DataGridRow)myDataGrid.ItemContainerGenerator.ContainerFromIndex(index);
}
return row;
} public static T GetVisualChild<T>(Visual parent) where T : Visual
{
T child = default(T);
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numVisuals; i++)
{
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
child = v as T;
if (child == null)
{
child = GetVisualChild<T>(v);
}
if (child != null)
{
break;
}
}
return child;
}
这个方法应该是返回List的....一个控件下面可能有多个同类型的子控件