如何在DataGridTemplateColumn中访问控件以获取值?

时间:2012-11-05 06:25:18

标签: wpf c#-4.0

如何访问DataGridTemplateColumn中的控件以获取值?

我正在使用此代码:

  <DataGrid HeadersVisibility="None"  Name="dgUser" Grid.Row="0" Grid.Column="0" AutoGenerateColumns="False" ItemsSource="{Binding}"
 CanUserAddRows="False" CanUserDeleteRows="False" CanUserSortColumns="False">
                                <DataGrid.Columns>
                                    <DataGridTemplateColumn Width="*" Header="" IsReadOnly="True">
                                        <DataGridTemplateColumn.CellTemplate>
                                            <DataTemplate>
                                                <StackPanel Orientation="Horizontal"  Margin="10,0,0,0" Grid.Column="0"  Name="partcount">
                                                    <TextBlock Margin="0,0,5,0" Text="Count"/>
                                                    <TextBox Margin="0,0,5,0" MinWidth="50" Width="Auto" Name="txtcount" Text="{Binding Count}"/>
                                                </StackPanel>
                                            </DataTemplate>
                                        </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>
       </DataGrid.Columns>
                            </DataGrid>

如何访问txtcount?

1 个答案:

答案 0 :(得分:1)

您必须浏览可视树才能找到此元素。我前一段时间写了一个实用程序类,这使得它更容易一些,使用Linq-to-VisualTree您可以按如下方式找到它:

TextBox tb = dgUser.Descendants<TextBox>()
                   .OfType<TextBox>()
                   .Where(t => t.Name == "txtcount")
                   .Single();