【问题标题】:Setting child control values in silverlight 4在 silverlight 4 中设置子控件值
【发布时间】:2011-04-06 11:40:08
【问题描述】:

如何从父控件设置 TextBlock 的值?

即我的父控件(Parent.xaml)有一个像这样声明的子控件(Child.xaml)

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

子控件包含一个声明为&lt;TextBlock Text="12345" x:Name="textBlock1" /&gt;的TextBlock

我希望能够从 Parent.xaml.cs 更改文本框内容,所以我尝试使用

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

但我得到“'Child' is a 'property' but is used like a 'type'”错误。

我是 Silverlight 的新手,我有点困惑。有关如何正确执行此操作的任何想法?

提前致谢。

L

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    因为Child 是一个单独的控件,所以textBlock1 不会自动提供给父控件 - 它对子控件是私有的,除非您明确公开它。

    所以在子控件中你可以有一个像这样的公共属性:

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

    或者您可以更直接地公开 TextBlock:

    public TextBlock ChildTextBlock 
    {
        get { return textBlock1; }
    }
    

    还有其他一些更好(但稍微复杂)的方法(绑定、依赖属性),但这些可以帮助您入门。

    【讨论】:

    • 谢谢,上面的例子是有道理的,但是当我将 x:Name 添加到父控件中的子控件时,似乎出现了错误。我不知道为什么会这样,但我设法通过在 Parent.xaml.cs 中使用这段肮脏的代码来解决它:Child c = stackPanel.Children[0] as Child; c.Text = "Hello"; 其中 stackPanel 是 Child 的容器。这在您的示例中设置属性 Text 后有效。不漂亮,但我想现在就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多