从代码访问自定义控件的子控件

时间:2011-04-20 21:32:28

标签: c# visual-studio silverlight windows-phone-7 expression-blend

我在Expression Blend中创建了一个自定义控件,它由放置在TextBlock中的多个Grid组成。现在,我将此自定义控件添加到Visual Studio中的电话页面,并希望从C#代码访问和更改这些TextBlock的文本。

如何在代码中访问这些子控件?

我以为我可以这样做:

MyCustomControl.TextBlock1.Text = "New Text";

但这并不容易。那我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

属性MyCustomControl.TextBlock1存在但是internal,而不是public。您可以使用MyCustomControl.FindName("TextBlock1") as TextBlock来按名称查找资源。

答案 1 :(得分:0)

GetTemplateChild(string name);是否有效?您应该能够使用它来访问控件模板的元素

答案 2 :(得分:0)

尝试以下代码,两者都应符合您的要求:

Control subControl1 = (Control)MyCustomControl.Controls[0];

TextBox subControl1 = (TextBox)MyCustomControl.Controls[0];

使用任何代码都可以访问Text Property。 始终记住自定义控件中的层次结构,然后尝试逐级访问所有控件。

如果您仍然面临任何问题,请随时提出。