2010-02-22 170 views
0

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

回答

1

您正在使用附加屬性的語法嘗試設置'嵌套'屬性。

Silverlight正在爲'UserControlA'類尋找'MyNestedControl'類中定義的'Title'屬性。

在Xaml中,這種類型的嵌套是不可能的(也不是可取的 - 你違反demeter的定律)。

+0

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

0

嘗試使用CustomControl insted UserControl。