我有一个UserControlB,它公开了一个string类型的Title属性。 然后我有一个UserControlA,它包含一个UserControlB并公开一个名为MyNestedControl的属性,它返回UserControlB的实例。
在我的主页面中,我正在声明UserControlA,我正在尝试将Title属性的值设置为MyNestedControl.Title =“ABC”。
但是,Visual Studio会抛出一个编译错误,指出Type UserControlA上不存在Title。
这种嵌套是否可以通过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>
答案 0 :(得分:1)
我认为您必须通过xaml DependencyProperties创建您想要访问的属性。
答案 1 :(得分:1)
您正在使用附加属性的语法来尝试设置'嵌套'属性。
Silverlight正在寻找'MyNestedControl'类中为'UserControlA'类定义的'Title'属性。
在Xaml中,这种类型的嵌套是不可能的(也不是可取的 - 你违反了demeter定律)。
答案 2 :(得分:0)
尝试使用自定义控件而不是UserControl。