如何从位于DataTemplate之外的控件中访问位于DataTemplate中的控件。

15 浏览
0 Comments

如何从位于DataTemplate之外的控件中访问位于DataTemplate中的控件。

问题:我想在此按钮的事件处理程序中访问文本框。如何做到?

0
0 Comments

问题的原因是在DataTemplate标签外部访问DataTemplate中的控件。解决方法是使用VisualTreeHelper类来遍历可视化树,以查找DataTemplate中的控件。

以下是用于ListBox的代码示例,可以根据需要进行修改:

public string option_selected = "";
public int check_count = 0;
public void SearchElement(DependencyObject targeted_control)
{
    var count = VisualTreeHelper.GetChildrenCount(targeted_control);   // targeted_control是ListBox
    if (count > 0)
    {
        for (int i = 0; i < count; i++)
        {
            var child = VisualTreeHelper.GetChild(targeted_control, i);
            if (child is TextBlock) // 特定的子控件
            {
                TextBlock targeted_element = (TextBlock)child;
                if (targeted_element.IsChecked == true)
                {
                    if (targeted_element.Tag != null)
                    {
                        option_selected = targeted_element.Tag.ToString();
                    }
                    return;
                }
            }
            else
            {
                SearchElement(child);
            }
        }
    }
    else
    {
        return;
    }
}

你可以参考这个链接中的示例来解决问题:[如何访问DataTemplate中的特定项?](https://stackoverflow.com/questions/5181063/)

希望对你有所帮助!

0