我在Expression Blend中创建了一个自定义控件,它由放置在Grid
中的多个TextBlock
组成。现在,我在Visual Studio中将此自定义控件添加到我的电话页面中,并希望从C#代码访问和更改这些TextBlocks的文本。
如何在代码中访问这些子控件?
我想我可以这样做:
MyCustomControl.TextBlock1.Text = "New Text";
但这并不是那么容易。那么我该怎么做呢?
发布于 2011-04-21 04:25:18
属性MyCustomControl.TextBlock1
存在,但它是internal
,而不是public
。您可以使用MyCustomControl.FindName("TextBlock1") as TextBlock
按名称查找资源。
发布于 2011-04-20 22:06:27
GetTemplateChild(string name);
能工作吗?您应该能够使用它来访问控件模板的元素
发布于 2017-10-31 11:40:14
尝试下面的代码,这两个代码都可以满足您的需求:
Control subControl1 = (Control)MyCustomControl.Controls[0];
或
TextBox subControl1 = (TextBox)MyCustomControl.Controls[0];
使用任何代码都可以访问Text属性。始终记住自定义控件中的层次结构,然后尝试逐级访问所有控件。
如果您仍然面临任何问题,请随时询问。
https://stackoverflow.com/questions/5736900
复制