Проблемы с пользовательскими элементами управления пользовательского элемента управления Silverlight - PullRequest
1 голос
/ 14 февраля 2011

Я относительно новичок в Silverlight, так что вполне возможно, что мой вопрос немного сбивает с толку.Проблема в следующем:

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

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

Что я сделал:

1) Я создал новый пользовательский элемент управления 2) Я создал модель для него для представления данных из базы данных 3) Я объявил свойство зависимости дляэлемент управления silverlight, представляющий объект Entity, с которым связан элемент управления 4) Я реализовал обратный вызов обновления зависимостей, и именно здесь начинаются проблемы.

public partial class TelephoneControl
{

    public TelephoneModel Model
    {
        get { return (TelephoneModel)DataContext; }
        set { DataContext = value; }
    }
    public static readonly DependencyProperty TelephoneProperty = 
        DependencyProperty.Register("Telephone", typeof(Telephone), typeof(TelephoneControl),
        new PropertyMetadata(null, TelephoneChanged));

    private static void TelephoneChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        ((TelephoneControl) d).HandleTelephonChanged(e);
    }
    protected void HandleTelephonChanged(DependencyPropertyChangedEventArgs e)
    {
        if (!_changingContext)
        {
            _changingContext = true;

            var val = (Telephone) e.NewValue;

            if (val == null)
            {
                Model = GetNewModel();
                RaiseEntityAdded();
            }
            else
            {
                Model = GetModelByPhone(val);
            }
        }

        _changingContext = false;
    }
...........

}

Как вы можете видеть, у меня нетнашел лучшее место для создания модели для управления, чем обратный вызов dp.И у меня есть сильное наполнение, что я сделал что-то не так.

...