无法从代码访问Windows 8 Store用户控件

时间:2013-07-11 15:03:51

标签: c# windows-8 user-controls winrt-xaml

我正在编写一个Windows 8商店应用程序,在其中我设计了自己的用户控件。

这是我的usercontrol的代码(这是一个虚拟控件,但问题是存在的):

<UserControl
    x:Class="Windows8StoreTest.TestUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Windows8StoreTest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Width="70"
    Height="40">

    <StackPanel>
        <Button Content="Hello" Foreground="Pink" BorderBrush="Pink"/>
    </StackPanel>
</UserControl>

我已将用户控件放到我的页面上并为其命名:

<Page
    x:Class="Windows8StoreTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Windows8StoreTest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <local:TestUserControl Name="testControl"/>
    </Grid>
</Page>

但是,当我转到后面的代码时,我无法通过该名称访问该控件。它似乎不存在!奇怪的是,MainPage类的InitializeComponent()方法中不存在控件,这就是它存在的原因。

我的用户控件缺少什么?

我正在使用Windows 8商店,XAML,c#。

提前致谢

3 个答案:

答案 0 :(得分:1)

尝试使用它:

<local:TestUserControl x:Name="testControl"/>

应该工作......

答案 1 :(得分:0)

你好,我不知道出了什么问题,但它应该工作。我刚刚做了一个示例。我把它放在这里希望你也这样做。

<Page
x:Class="App12.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App12"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <local:MyUserControl1 x:Name="hellousercontrol"  />
</Grid>

在我的mainpage.cs中..我刚才这样使用..

public MainPage()
    {
        this.InitializeComponent();

        hellousercontrol.Height = 100;
}

还有一个......你有没有建立自己的解决方案?

答案 2 :(得分:0)

我在c ++环境中遇到了同样的问题。我观察到,我的类中没有默认构造函数,只要添加了默认构造函数,我就可以通过XAML文件在项目中使用已定义的UserControl。但是,如果没有默认构造函数,我可以在c ++代码中使用它。