嵌套控件和属性

问题描述:

我有一个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的定律)。

+0

谢谢,明白:-) – Bruno 2010-02-24 11:09:22

我认为你必须让你想通过XAML DependencyProperties访问的性能。

尝试使用CustomControl insted UserControl。