在模板WPF datagrid中查找控件

时间:2012-05-25 03:53:06

标签: wpf wpfdatagrid

  

可能重复:
  get value of checkbox from datagrid? C#

我试图在模板化的DataGrid中的所选行中找到一个控件。

 <DataGridTemplateColumn Header="Local">
                 <DataGridTemplateColumn.CellTemplate>
                      <DataTemplate>
                           <CheckBox Name="chkImport"  IsChecked="{Binding IsLocalized}"></CheckBox>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

我正在尝试以下代码:

   var selectedRow = (DataGridRow) gridFileScan.ItemContainerGenerator.ContainerFromItem(gridFileScan.SelectedItem);                           

   CheckBox chkImport = FindVisualChild<CheckBox>(selectedRow);

但chkImport始终为null。任何想法??

2 个答案:

答案 0 :(得分:0)

调试时,您应该能够看到该方法递归VisualTree。

您可以使用the Visual Tree Visualizer

查看可视树

FindVisualChild的实现可能存在缺陷,或者VisualTree看起来不像您期望的那样。

答案 1 :(得分:0)

找到它。我只需在修改ItemsSource后调用此方法:

  gridFileScan.UpdateLayout();