情况:我有一个位于<phone:Panorama.TitleTemplate>
标记的DataTemplate中的文本框控件
<phone:Panorama.TitleTemplate>
<DataTemplate>
<TextBlock Text="select your problem" Margin="7,40,0,0"
FontSize="60" Foreground="{StaticResource PhoneForegroundBrush}"/>
</DataTemplate>
</phone:Panorama.TitleTemplate>
现在我有另一个按钮位于DataTemplate标记之外和LayoutRoot Grid标记内。此按钮有一个单击事件,其定义出现在cs文件后面的代码中。
问题: 我想访问此按钮的事件处理程序中的文本框。我该怎么做?
答案 0 :(得分:0)
您可以使用VisualTreeHelper
。
尝试使用此列表框的代码段,您可以对其进行修改:
public string option_selected = "";
public int check_count = 0;
public void SearchElement(DependencyObject targeted_control)
{
var count = VisualTreeHelper.GetChildrenCount(targeted_control); // targeted_control is the listbox
if (count > 0)
{
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(targeted_control, i);
if (child is TextBlock) // specific/child control
{
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;
}
}
这是一个很好的示例,您可以通过How to access a specific item in a Listbox with DataTemplate?
希望它有所帮助!