Silverlight:如何将usercontrol的属性值分配给文本框?

时间:2013-05-02 15:28:01

标签: silverlight properties user-controls textbox expression-blend

我有一个用户控件,我已将其添加到silverlight中的外部表单中。用户控件有一个名为txtRoleTitle的文本框,我在usercontrol的类中声明了一个名为lableName的属性,并将txtRoleTitle.text分配给labelName,如下面的代码所示, 在silverlight属性面板中,在其他菜单下,我已将labelName设置为“Landlord”,然后将另一个此用户控件添加到outerform并将其labelName设置为Tenant。但是,当我运行Silverlight对话时,这似乎不起作用。在设计和运行时,labelName的值不会出现在文本框中。

以下是我的代码。感谢

public partial class UserRoleDetails : UserControl
{
    public string labelName { get; set; }

    public UserRoleDetails()
    {
        InitializeComponent();

        this.txtRoleTitle.Text = labelName;
    }

}

3 个答案:

答案 0 :(得分:0)

您正在构造函数中设置txtRoleTitle.Text的值,在赋值时,labelName属性将没有值。

我认为你需要考虑使你的labelName成为一个依赖属性,并在用户控件的xaml中绑定你的txtRoleTitle控件。看一下这个例子:http://stevenhollidge.blogspot.co.uk/2012/03/dependency-properties-in-user-control.html

答案 1 :(得分:0)

首先,您的类应该实现INotifyPropertyChanged接口

其次,您应该将labelName属性设为notify属性。

第三,您应该将txtRoleTitle的text属性绑定到您的notify属性。

好的,你已经完成了。

示例:http://social.msdn.microsoft.com/Forums/en-US/silverlightcontrols/thread/052a2b67-20fc-4f6a-84db-07c85ceb3303/

答案 2 :(得分:0)

我看了一下依赖属性解决方案。虽然如果正确实施可能会有效,但对于我想要做的事情,这是一个过度的解决方案。所以我现在有一个简单的解决方案,请参阅下面的代码:

public partial class UserRoleDetails : UserControl
{
    public string labelName
    {
        get {return this.txtRoleTitle.Text;}
        set {this.txtRoleTitle.Text = value;}
    }

    public UserRoleDetails()
    {
        InitializeComponent();
    }
}