【问题标题】:How to access control in DataGridTemplateColumn to get value?如何访问 DataGridTemplateColumn 中的控件以获取值?
【发布时间】:2012-11-05 06:25:17
【问题描述】:

如何访问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?

【问题讨论】:

    标签: wpf c#-4.0


    【解决方案1】:

    您必须在可视化树中导航才能找到该元素。不久前我写了一个实用程序类,使这更容易一些,使用 Linq-to-VisualTree 你可以找到它,如下所示:

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

    【讨论】:

    • TextBox 会显示哪个单元格作为结果,第一行右边的那个?
    • 错误:错误 1“System.Windows.Controls.DataGrid”不包含“后代”的定义,也没有接受“System.Windows.Controls”类型的第一个参数的扩展方法“后代”。可以找到 DataGrid'(您是否缺少 using 指令或程序集引用?)
    • @user1799345 Descendants() 是他编写的扩展方法。按照他提供的链接。
    • @ColinE 你有.NET Core 的新版本吗?在WPF Core 中,我收到与OP 上面完全相同的DataGrid 的以下错误:System.InvalidOperationException HResult=0x80131509 Message=Sequence contains no elements Source=System.Linq
    猜你喜欢
    • 1970-01-01
    • 2015-03-08
    • 2010-12-28
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2013-12-13
    相关资源
    最近更新 更多