尝试引用用户控件时,获取错误"当前上下文中不存在该名称"

Alw*_*wyn 2 c# xaml windows-runtime

我想在我的应用程序中标准化弹出窗口.所以我为它创建了一个用户控件,并按如下方式引用它:

    <!--<Popup x:Name="LoginPopup" Grid.ColumnSpan="2" Grid.RowSpan="2" Height="768" Width="1366" IsOpen="False">-->
        <uc:StandardDialog Name="StandardDialog" Height="768" Width="1366" Grid.ColumnSpan="2">
            .
            .
            .
        </uc:StandardDialog>
    <!--</Popup>-->
Run Code Online (Sandbox Code Playgroud)

并在代码背后:

    private void LoginClicked(object sender, RoutedEventArgs e)
    {
        StandardDialog.IsOpen = true;
        //LoginPopup.IsOpen = true;
    }

    private void CloseLoginPopup(object sender, RoutedEventArgs e)
    {
        StandardDialog.IsOpen = false;
        //LoginPopup.IsOpen = false;
    }
Run Code Online (Sandbox Code Playgroud)

然而,这失败了以下错误,指向上面的行:

错误1当前上下文中不存在名称"StandardDialog"C:\ NSyncHg\MyApp.WinRT\Views\TestVisualAwarePage.xaml.cs 46 13 MyApp.WinRT

但是,如果我要取消注释上面的弹出窗口并恢复到内置弹出窗口,则所有内容都会编译并运行.

我究竟做错了什么?

Ree*_*sey 6

您需要使用该x:Name属性,而不仅仅是Name.

 <uc:StandardDialog x:Name="StandardDialog" ...
Run Code Online (Sandbox Code Playgroud)

Windows应用商店应用程序不会自动为Name指定的对象创建字段.x:Name如果要创建命名字段并且可用于后面的代码,则需要该属性.

  • @Alwyn"Name"只是对象上的一个属性.`x:Name`是XAML用于构建字段的指令(如果存在,还设置Name属性).WPF实际上会使两者都可以互换,但是Windows商店更挑剔. (2认同)