2011-04-06 83 views
0

如何從父控件設置TextBlock的值?在silverlight中設置子控件值4

即我的父母控制(Parent.xaml)的子控件(Child.xaml)聲明如下

<myNamespace:Child x:Name="child"/> 

子控件包含一個TextBlock聲明<TextBlock Text="12345" x:Name="textBlock1" />

我想是能夠改變從Parent.xaml.cs文本框的內容,所以我試圖用

child.textBlock1.Text = "Some new text"; 

,但我得到「‘兒童’是‘屬性’,但使用類似「TY pe'「錯誤。

我是Silverlight的新手,我有點困惑。任何想法如何正確地做到這一點?

在此先感謝。

大號

回答

0

因爲Child是一個獨立的控制,textBlock1無法自動獲得父 - 它是私有的子控件,除非你明確地揭露它公開。

所以在孩子的控制,你可以有一個公共屬性是這樣的:

public string Text 
{ 
    set { textBlock1.Text = value; } 
} 

,或者你可以只露出TextBlock的更直接:

public TextBlock ChildTextBlock 
{ 
    get { return textBlock1; } 
} 

有幾個其他更好的(但稍微複雜一些)的方式(綁定,依賴屬性),但這些會讓你開始。

+0

謝謝,上面的例子是有道理的,但是當我向父級內的子控件添加一個x:Name時,錯誤似乎出現了。我無法弄清楚爲什麼這是,但我設法通過在Parent.xaml.cs中使用這一髒兮兮的代碼來解決它: 'Child c = stackPanel.Children [0] as Child; c.Text =「Hello」;' 其中,stackPanel是Child的容器。這可以在你的例子中設置屬性Text之後工作。不漂亮,但我想現在會做。 – LCL 2011-04-06 13:15:07

相關問題