访问DataTemplate中定义的StackPanel

时间:2014-03-28 11:54:56

标签: windows-phone-8 datatemplate longlistselector

我有一个LongListSelector,我根据用户的选择根据我收到的数据选择合适的DataTemplate。 我在页面的资源中定义了3个DataTemplates,并在填充我的LongListSelector之前设置了适当的一个 - 使用:

RoutesLongListSelector.ItemTemplate = Resources["SecondItemTemplate"] as DataTemplate;

这些DataTemplates中有一个元素-a StackPanel-我在填充列表后添加了一些子元素。

<StackPanel x:Name="MyStations" Grid.Column="1" Grid.Row="1">
</StackPanel>

因此,当我尝试使用其名称来添加子项[MyStations.Children.Add(...)]时,我收到此错误:“MyStations”在当前上下文中不存在。 我试图在页面的ContentPanel中将其中一个模板设置为默认值,但我仍然遇到同样的错误。

似乎是一个小问题,但我想不出什么。 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您无法使用DataTemplete属性访问Name的UI元素,即x:Name。您可以使用它加载的事件来访问它。请具体说明您的要求。

<StackPanel x:Name="MyStations" Grid.Column="1" Grid.Row="1" 
        Loaded="MyStations_Loaded" />
private void MyStations_Loaded(object sender, RoutedEventArgs e)
{
    var _StackPanel = (StackPanel)sender;
}