2012-02-11 17 views
4

使用Windows 8开发者预览版,我试图用我已经创建使用内置在Windows Metro风格的模板简单的用户控件。 正如我却没有能够让我的应用程序,以解决参考,即使它是在同一个项目和命名空间中引用它的页面的控制。我刚刚得到“找不到类型” 我查看了“构建”示例,并找不到使用用户控件的示例C#项目。 有谁知道我在哪里可以找到一个?Windows 8的用户控制样品

回答

2

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

您可以通过右键单击您的项目,选择添加/新项目(按Ctrl + Shift + A),然后选择“用户控制”从项目模板列表中创建一个UserControl。然后你的名字,并以您可以修改添加喜欢这里更多的UI的XAML结束:

<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" /> 
+0

请信息添加到这个答案,使之更容易理解。对我来说,与以前的版本比较并不会突出显示任何更改。 – Morothar 2014-01-09 09:09:34

+1

原始海报询问了有关UserControl实现的示例,并将其链接到当时似乎满足他的一个。我可以添加更多细节。 – 2014-01-09 22:56:00

+0

非常感谢您投入额外时间! – Morothar 2014-01-10 11:13:58

1

即使用户控件是在同一个名字,你将不得不宣布该命名空间在XAML中使用它。尝试添加属性到您的网页元素

xmlns:uc="YourApplication.Namepace" 

和前缀为您的XAML控制

<uc:YourUserControl />. 

确保您的项目时,你是不是引用了用户控制的基础之上。用户控件中的错误将导致这个问题。

0

如果您使用的是Metro应用的默认项目模板,页面的命名空间通常命名为局部的,它已经从模板创建如下新的一页。

xmlns:local="using:App1" 

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

所以,你可以参考你的用户控件作为

<local:MyUserControl1/> 

如果从工具箱拖动的MyUserControl到XAML的设计师,这一切都是自动的。你不需要为此编写任何代码。