在WPF中获取文本框名称

3

我是一名WPF新手,所以我认为这是一个简单的问题。问题是我无法获取文本框名称。该文本框位于GridView内。有没有解决方法? 该文本框位于DataTemplate下。

XAML

<GridViewColumn.CellTemplate >
    <DataTemplate >
        <StackPanel >
            <TextBox x:Name="txtPurchasePrice" 
                     Width="60" 
                     TextChanged="txtPurchasePrice_TextChanged" />
        </StackPanel>
    </DataTemplate>
</GridViewColumn.CellTemplate>

1
这可能是你正在寻找的吗?https://dev59.com/t3PYa4cB1Zd3GeqPexVi - Karl-Henrik
如果文本框在网格视图中,您无法直接在代码后台获取它,您需要先从网格视图中选择一行,然后从该行查找文本框。 - Manish Parakhiya
1个回答

2

很遗憾,没有像访问命名对象那样简单的方法。一种选择是迭代父控件的子对象,并根据已知值检查文本字段。

private void Button_Click(object sender, RoutedEventArgs e)
{
    GetTextBox(datagrid);
}

public void GetTextBox(Visual visual)
{
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(visual); i++)
    {
        Visual childVisual = (Visual) VisualTreeHelper.GetChild(visual, i);
        if (childVisual is TextBox)
            MessageBox.Show("textbox Found");
        // Recursively enumerate children of the child visual object.
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接