Я относительно новичок в 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.И у меня есть сильное наполнение, что я сделал что-то не так.