Silverlight: как назначить значение свойства usercontrol для текстового поля?

У меня есть пользовательский элемент управления, который я добавил к внешней форме в Silverlight. У пользовательского элемента управления есть текстовое поле с именем txtRoleTitle, я объявил свойство в классе пользовательского элемента управления с именем lableName и назначил txtRoleTitle.text для labelName, как показано в приведенном ниже коде, на панели свойств silverlight, под разным меню, я установил labelName в "Лендлорд", затем добавил еще один из этого пользовательского элемента управления во внешнюю форму и установите для его labelName значение "Арендатор". Но, похоже, это не работает, когда я запускаю диалог Silverlight. Значение labelName не отображается в текстовом поле во время разработки и выполнения.

Вот мой код ниже. Спасибо

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

    public UserRoleDetails()
    {
        InitializeComponent();

        this.txtRoleTitle.Text = labelName;
    }

}

3 ответа

Решение

Я посмотрел на решение проблемы зависимости собственности. Хотя, хотя это может работать, если все реализовано должным образом, для того, что я пытаюсь сделать, это излишнее решение. Итак, у меня есть простое решение, которое работает сейчас, см. Код ниже:

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

    public UserRoleDetails()
    {
        InitializeComponent();
    }
}

Прежде всего, ваш класс должен реализовывать интерфейс INotifyPropertyChanged

Во-вторых, вы должны сделать свойство labelName как свойство notify.

В-третьих, вам следует привязать свойство text txtRoleTitle к свойству notify.

Хорошо, вы сделали.

Пример: http://social.msdn.microsoft.com/Forums/en-US/silverlightcontrols/thread/052a2b67-20fc-4f6a-84db-07c85ceb3303/

Вы устанавливаете значение txtRoleTitle.Text в своем конструкторе, в точке назначения свойство labelName не будет иметь значения.

Я думаю, вам нужно взглянуть на то, как сделать свой labelName свойством зависимости и связать свой элемент управления txtRoleTitle в xaml пользовательского элемента управления. Посмотрите на этот пример: http://stevenhollidge.blogspot.co.uk/2012/03/dependency-properties-in-user-control.html

Другие вопросы по тегам