我在Expression Blend中创建了一个自定义控件,它由放置在TextBlock
中的多个Grid
组成。现在,我将此自定义控件添加到Visual Studio中的电话页面,并希望从C#代码访问和更改这些TextBlock的文本。
如何在代码中访问这些子控件?
我以为我可以这样做:
MyCustomControl.TextBlock1.Text = "New Text";
但这并不容易。那我该怎么做呢?
答案 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。 始终记住自定义控件中的层次结构,然后尝试逐级访问所有控件。
如果您仍然面临任何问题,请随时提出。