2014-03-28 3 views
0

У меня есть LongListSelector, для которого я выбираю соответствующий DataTemplate на основе данных, которые я получаю в соответствии с выборами пользователя. Есть 3 из этих DataTemplates, которые я определяю ресурсы + страницы и установите соответствующий один -JUST, прежде чем заселять мой LongListSelector- помощью:Доступ к StackPanel, определенный в DataTemplate

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 страницы, но я все равно получаю ту же ошибку.

Кажется, это второстепенная проблема, но я ничего не мог придумать. Любые предложения?

+0

элементы внутри шаблона данных не являются непосредственно доступными по имени. – kshitijgandhi

ответ

1

Вы не можете получить доступ к элементам пользовательского интерфейса DataTemplete с их имуществом Name, то есть 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; 
} 
+0

Это было полезно, спасибо! – klitemnistra

+0

Добро пожаловать. Пожалуйста, отметьте его принятым, чтобы другие могли получить от него выгоду. – Xyroid