嵌套控件和属性

时间:2010-02-22 19:19:13

标签: c# silverlight xaml

我有一个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>

3 个答案:

答案 0 :(得分:1)

我认为您必须通过xaml DependencyProperties创建您想要访问的属性。

答案 1 :(得分:1)

您正在使用附加属性的语法来尝试设置'嵌套'属性。

Silverlight正在寻找'MyNestedControl'类中为'UserControlA'类定义的'Title'属性。

在Xaml中,这种类型的嵌套是不可能的(也不是可取的 - 你违反了demeter定律)。

答案 2 :(得分:0)

尝试使用自定义控件而不是UserControl。