嵌套控件和属性
问题描述:
我有一个UserControlB公开一个类型为字符串的Title属性。 然后我有一个UserControlA包含一个UserControlB并公开一个名为MyNestedControl的属性,它返回UserControlB的实例。嵌套控件和属性
在我的主页我声明一个UserControlA,我试图设置Title属性的值如下MyNestedControl.Title =“ABC”。
但是,Visual Studio会引发编译错误,指出Title类型在UserControlA上不存在。
这种类型的嵌套可能通过xaml?请参阅下面的完整代码。
非常感谢, 布鲁诺
<UserControlB>
<TextBlock x:Name="txtBlock" />
</UserControlB>
public partial class UserControlB : UserControl {
public string Title
{
get { return this.txtBlock.Text; }
set { this.txtBlock.Text = value; }
}
}
<UserControlA>
<local:UserControlB x:Name="userControlB" />
</UserControlA>
public partial class UserControlA : UserControl {
public UserControlB MyNestedControl
{
get { return this.userControlB; }
}
}
<MainPage>
<local:UserControlA x:Name="userControlA" MyNestedControl.Title="ABC" />
</MainPage>
答
您正在使用附加属性的语法尝试设置'嵌套'属性。
Silverlight正在为'UserControlA'类寻找'MyNestedControl'类中定义的'Title'属性。
在Xaml中,这种类型的嵌套是不可能的(也不是可取的 - 你违反demeter的定律)。
答
尝试使用CustomControl insted UserControl。
谢谢,明白:-) – Bruno 2010-02-24 11:09:22