将代码放在依赖项属性的setter块中是安全的,还是应该总是使用回调方法?什么是差异?
public static readonly DependencyProperty BodyTextProperty =
DependencyProperty.Register("BodyText", typeof(string), typeof(EliteEditor), new PropertyMetadata(string.Empty, BodyText_Callback));
public string BodyText
{
get { return (string)GetValue(BodyTextProperty); }
set
{
/***** IS IT SAFE TO WRITE CODE HERE? *****/
SetValue(BodyTextProperty, value);
}
}
private static void BodyText_Callback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
/***** OR SHOULD I ALWAYS WRITE CODE HERE? *****/
}
答案 0 :(得分:8)
如果您实际在C#中调用该setter(通过BodyText = someValue
某处),则setter块中的代码将仅触发。如果运行时更新依赖项属性(例如通过绑定更新),则不会触发它。
从技术上讲,你甚至不需要定义属性;如果没有它,系统将正常工作。该片段可以让您的生活更轻松。
因此,您应始终对回调进行编码;从来没有设置过逻辑。