将代码放在依赖项属性的setter块中是安全的,还是应该总是使用回调方法?

时间:2018-04-20 20:28:33

标签: c# wpf xaml uwp

将代码放在依赖项属性的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? *****/
    }

1 个答案:

答案 0 :(得分:8)

如果您实际在C#中调用该setter(通过BodyText = someValue某处),则setter块中的代码将触发。如果运行时更新依赖项属性(例如通过绑定更新),则不会触发它。

从技术上讲,你甚至不需要定义属性;如果没有它,系统将正常工作。该片段可以让您的生活更轻松。

因此,您应始终对回调进行编码;从来没有设置过逻辑。