2014-11-16 1 views
1

У меня есть ToggleButton в MainPage.xaml:Почему мой XAML ToggleButton невидим для кода?

<ToggleButton x:Name="ColorToggle" Background="{Binding Background, ElementName=LayoutRoot}" ToolTipService.ToolTip="Change Toolbar Color"> 

... но когда я пытаюсь получить доступ к нему из MainPage.xaml.cs:

private void SaveAppBarColorSelected(object sender, TappedRoutedEventArgs e) 
{ 
    PhotraxUtils.SetLocalSetting(PhotraxConsts.APPBARBUTTON_COLOR, ColorToggle.Background.ToString()); 
} 

... Я получаю "Название «ColorToggle» не существует в текущем контексте «

Почему это?

+1

Является ли 'SaveAppBarColorSelected()' в том же классе? Это просто в файле кода UserControl, верно? –

+0

Да - ToggleButton находится в MainPage.xaml, и метод находится в MapnPage.xaml.cs. Он объявлен в ControlTemplate в xaml. –

+0

Установите свой DataContext в свой вид, чтобы выйти за пределы ControlTemplate, он находится через родственников или напрямую. ;) –

ответ

1

Доступны только элементы управления из корневого контекста. Если вы разместите свой именованный элемент управления внутри шаблона, он будет недоступен. Вы можете перемещать дерево управления с помощью VisualTreeHelper и другими способами в этом случае.

Или еще лучше, просто используйте MVVM.

 Смежные вопросы

  • Нет связанных вопросов^_^