访问页面XAML上定义的Panel控件时遇到问题,以这种方式定义XAML:

<UserControl
    x:Class="PhoneBook.SilverlightMainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    mc:Ignorable="d" Width="400" Height="300" d:DesignWidth="993" d:DesignHeight="887">

    <Grid x:Name="LayoutRoot" />
</UserControl>

该类的定义如下:
public partial class SilverlightMainPage : UserControl
{
    public SilverlightMainPage()
    {
        InitializeComponent();
    }
}

我正在尝试以这种方式实例化它:
var silverlightMainPage = new PhoneBook.SilverlightMainPage();
SomeMethod((silverlightMainPage.LayoutRoot);

我感到奇怪的是,当我将点放在对象实例之后时,它实际上将LayoutRoot列为成员之一,但是当我尝试编译应用程序时,它说没有该名称的成员。

有什么想法可以解决?

谢谢

编辑:我还尝试在返回LayoutRoot元素的SilverlightMainPage类上创建一个属性,但是它还说该类不包含Layout根的定义。

最佳答案

您是否有可能尝试从其他程序集中访问SilverlightMainPage.LayoutRoot?在MainPage.g.i.cs文件中,LayoutRoot(以及XAML中定义的所有其他控件)被标记为“内部”,即:

    internal System.Windows.Controls.Grid LayoutRoot;

您可能想要尝试创建一个执行FindName(“LayoutRoot”)并返回适当控件的公共(public)属性,而不是内部属性。

08-03 14:57