4

使用 Windows 8 开发人员预览版,我尝试使用使用内置 Windows Metro 样式模板创建的简单用户控件。到目前为止,我还无法让我的应用程序解析对控件的引用,即使它与引用它的页面位于同一个项目和命名空间中。我只是得到“找不到类型”我查看了“构建”示例,但找不到使用用户控件的示例 C# 项目。有谁知道我在哪里可以找到一个?

4

3 回答 3

2

检查http://asyncui.codeplex.com/SourceControl/changeset/view/7969#139603

您可以UserControl通过右键单击您的项目并选择添加/新建项目 (Ctrl+Shift+A) 并从项目模板列表中选择“用户控制”来创建一个。然后命名它并最终得到 XAML,您可以修改它以添加更多 UI,如下所示:

<UserControl
    x:Class="Xyzzer.AsyncUI.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="768"
    d:DesignWidth="1366">

    <Grid
        x:Name="LayoutRoot"
        Background="#FF0C0C0C">
        <Grid
            VerticalAlignment="Top"
            Height="140">
            <Grid.ColumnDefinitions>
                <ColumnDefinition
                    Width="120" />
                <ColumnDefinition
                    Width="*" />
            </Grid.ColumnDefinitions>
            <Button
                x:Name="BackButton"
                IsEnabled="False" />
            <TextBlock
                x:Name="PageTitle"
                Text="Some Page!"
                Grid.Column="1" />
        </Grid>
    </Grid>
</UserControl>

和后面的代码是这样的:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Windows.Foundation;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;

namespace Xyzzer.AsyncUI
{
    partial class MainPage
    {
        public MainPage()
        {
            InitializeComponent();
        }
    }
}

然后,您可以在 XAML 中的其他地方使用该控件,如下所示:

<xa:MainPage
    xmlns:xa="using:Xyzzer.AsyncUI" />
于 2012-02-12T15:49:29.013 回答
1

即使用户控件位于同一命名空间中,您也必须声明命名空间以在 XAML 中使用它。尝试将属性添加到您的页面元素

xmlns:uc="YourApplication.Namepace"

以及 XAML 控件的前缀

<uc:YourUserControl />.  

确保在您不引用用户控件时构建您的项目。用户控件中的错误将导致此问题。

于 2012-02-26T23:09:22.623 回答
0

如果您使用的是 Metro 应用程序的默认项目模板,则页面的命名空间通常命名为本地,它已经在从模板创建的新页面中,如下所示。

xmlns:local="using:App1"

请注意,“使用:”是 Metro 应用程序中的新语法。

因此,您可以将用户控件引用为

<local:MyUserControl1/>

如果您将 MyUserControl 从工具箱拖到 xaml 设计器,所有这些都是自动的。您无需为此编写任何代码。

于 2012-07-21T07:29:12.637 回答