Привязка данных 2 свойства к 1 элементу управления - PullRequest
1 голос
/ 18 февраля 2010

Можно ли привязать 2 свойства к 1 элементу управления?Конкретно я думаю номера телефонов.У меня есть объект, все свойства которого можно привязать непосредственно к одному элементу управления, но у объекта есть свойство areacode и phonenumber.Мои пользователи очень предпочитают замаскированное текстовое поле для ввода телефонных номеров, а не 2 отдельным.

Точно так же гораздо проще добавить привязку в загрузку формы и вызвать метод постоянных объектов .save () вместо того, чтобы заполнять элементы управления при загрузке и переустанавливать их при сохранении (и это логично.разъединение между свойствами данных в коде формы и несвязанными).

Итак, мне интересно, возможно ли это вообще.

Правка> решена благодаря Yoooder.

Код, который я написал для решения этой проблемы, выглядит следующим образом:

public class Person : PersistentBase
{
    private string areaCode;
    private string number;

    public string AreaCode
    {
        get { return this.areaCode; }
        set { Persist("AreaCode", this.AreaCode, value); } // pseudocode
    }

    public string Number
    {
        get { return this.number; }
        set { Persist("Number", this.number, value); }
    }

    [NonPersistent]
    public string PhoneNumber
    {
        get { return string.Format("{0}{1}", this.AreaCode, this.Number)); }
        set
        {
            PhoneParts parts = SplitIntoParts(value); // uses regex etc.
            // Validate full phone number
            this.AreaCode = parts.AreaCode;
            this.Number = parts.Number;
        }
    }
}

, и я связываюсь, как обычно

textBox1.DataBindings.Add(new Binding("Text", this.person, "PhoneNumber"));

Ответы [ 2 ]

2 голосов
/ 18 февраля 2010

Привязка данных позволяет вам привязать 1 свойство из вашего источника данных к одному свойству на целевом элементе управления; каждый элемент управления может иметь несколько привязок. Таким образом, ваш DataSource.Value может связываться с TargetControl.Text; однако вы не можете связать DataSource.Value1 и DataSource.Value2 с TargetControl.Text

Если я правильно понимаю ваш сценарий использования, вы, вероятно, захотите, чтобы ваш источник данных отвечал за объединение кода города и номера телефона в одно привязываемое свойство. Это означает, что ваш источник данных объединит два свойства вместе для связывания, а также разделит их для сохранения.

0 голосов
/ 18 февраля 2010

Насколько мне известно, привязка данных находится на уровне свойств, поэтому элемент управления может содержать несколько привязок.

Для этого конкретного вопроса я бы предложил, чтобы два поля для хранения номера телефона не были наилучшим дизайном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...