C# 为什么我的XAML ToggleButton对后面的代码不可见?

C# 为什么我的XAML ToggleButton对后面的代码不可见?,c#,xaml,windows-store-apps,winrt-xaml,appbar,C#,Xaml,Windows Store Apps,Winrt Xaml,Appbar,我在MainPage.xaml中有一个切换按钮: <ToggleButton x:Name="ColorToggle" Background="{Binding Background, ElementName=LayoutRoot}" ToolTipService.ToolTip="Change Toolbar Color"> …我得到,“名称“ColorToggle”在当前上下文中不存在” 这是为什么?代码隐藏中只有根上下文中的控件可用。如果将命名控件放置在模板中,它将不可用。在

我在MainPage.xaml中有一个切换按钮:

<ToggleButton x:Name="ColorToggle" Background="{Binding Background, ElementName=LayoutRoot}" ToolTipService.ToolTip="Change Toolbar Color">
…我得到,“名称“ColorToggle”在当前上下文中不存在”


这是为什么?

代码隐藏中只有根上下文中的控件可用。如果将命名控件放置在模板中,它将不可用。在这种情况下,可以使用
VisualTreeHelper
和其他方法遍历控件树


或者更好的方法是使用MVVM。

Yes-ToggleButton位于MainPage.xaml中,方法位于MapnPage.xaml.cs中。它是在xaml中的ControlTemplate中声明的。将其DataContext设置为您的视图,以便通过relativesource或直接到达它所在的ControlTemplate之外。;)“主页”,而不是“MapnPage”(尽管这种拼写有点道理)。
private void SaveAppBarColorSelected(object sender, TappedRoutedEventArgs e)
{
    PhotraxUtils.SetLocalSetting(PhotraxConsts.APPBARBUTTON_COLOR, ColorToggle.Background.ToString());
}