【发布时间】:2015-10-08 21:38:55
【问题描述】:
我有这个代码。我需要从我的 c# 代码中访问 ScheduleList。但它是无法访问的。我只能访问 SchedulePivot。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Margin="0,0,0,50">
<Pivot x:Name="SchedulePivot" Margin="10,10,10,0" Title="Pivot" VerticalAlignment="Top">
<Pivot.ItemTemplate>
<DataTemplate>
<ListBox x:Name="ScheduleList" Margin="0,0,0,17" Width="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="52" Width="auto">
在 StackOverflow 上搜索我发现了这段代码:
private DependencyObject FindChildControl<T>(DependencyObject control, string ctrlName)
{
int childNumber = VisualTreeHelper.GetChildrenCount(control);
for (int i = 0; i < childNumber; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(control, i);
FrameworkElement fe = child as FrameworkElement;
// Not a framework element or is null
if (fe == null) return null;
if (child is T && fe.Name == ctrlName)
{
// Found the control so return
return child;
}
else
{
// Not found it - search children
DependencyObject nextLevel = FindChildControl<T>(child, ctrlName);
if (nextLevel != null)
return nextLevel;
}
}
return null;
}
我用这条线来获取孩子:
ListBox listCont = FindChildControl<ListBox>(this, "ScheduleList") as ListBox;
我也试过这样做:
ListBox listCont = FindChildControl<ListBox>(SchedulePivot, "ScheduleList") as ListBox;
比我这样做:
listCont.Items.Add(items);
并将例外设为 listCont=null。我怎么了?
【问题讨论】:
-
您何时(以及从何处)调用 FindChildControl?
-
由于 xaml 代码位于 MainPage.xaml 中,我在 MainPage.xaml.cs 中声明了此方法,并从 void 调用它,当单击按钮时会运行跨度>