我对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;
}
...........
}
正如你所看到的,我没有找到一个更好的地方来创建控制模型,而不是d.p.打回来。我有强烈的填充,我做错了什么。