我在访问页面的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列为其中一个成员,但是当我尝试编译应用程序时,它说没有具有该名称的成员。
关于什么可能是hapenning的任何想法?
由于
编辑:我也尝试在SilverlightMainPage类上创建一个返回LayoutRoot元素的属性,但它也说该类不包含Layout root的定义。
答案 0 :(得分:0)
您是否有可能尝试从其他程序集访问SilverlightMainPage.LayoutRoot?在MainPage.g.i.cs文件中,LayoutRoot(以及XAML中定义的所有其他控件)标记为“internal”,即:
internal System.Windows.Controls.Grid LayoutRoot;
您可能想尝试创建一个公共而不是内部属性来执行FindName(“LayoutRoot”)并返回适当的控件。
答案 1 :(得分:0)
其实我发现了问题。
我使用公司其他人建立的工具自动生成项目。
我做了一些额外的测试,并为项目添加了一个新的UserControl,并尝试从后面的代码中的属性访问LayoutRoot,并且它有效。
然后将完全相同的代码复制到带有问题的文件中(只是更改类名)并且它没有编译。
然后我检查了项目文件,找到了这样一个部分:
<ItemGroup>
<Compile Include="SilverlightMainPage.xaml.cs">
<DependentUpon>SilverlightMainPage.xaml</DependentUpon>
</Compile>
</ItemGroup>
由于某种原因导致编译失败。 我删除了那部分,现在一切正常。
感谢您的回答。