private static void ContentChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { var element = d as FrameworkElement; if (element != null) { var adornerLayer = AdornerLayer.GetAdornerLayer(element); if (adornerLayer != null) { adornerLayer.Add(new NoticeMessageAdorner(element as UIElement)); } else { //layer为null,说明还未load过(整个可视化树中没有装饰层的情况不考虑) //在控件的loaded事件内生成装饰件 element.Loaded += (s1, e1) => { var adorner = new NoticeMessageAdorner(element); var v = AdornerLayer.GetAdornerLayer(element); if (v != null) { v.Add(adorner); } }; } } }
private static void IsOpenChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { NoticeMessageAdorner adorner = NoticeMessageAdorner.GetAdorner(d); if (adorner == null) { return; } adorner.message.Duration = NoticeMessageAdorner.GetDuration(d); adorner.message.CornerRadius = NoticeMessageAdorner.GetCornerRadius(d); adorner.message.Content = NoticeMessageAdorner.GetContent(d); adorner.message.Background = NoticeMessageAdorner.GetBackground(d); adorner.message.MessageType = NoticeMessageAdorner.GetMessageType(d); adorner.message.SetBinding(NoticeMessage.IsShowProperty, new Binding() { Path = new PropertyPath("."), Source = (bool)e.NewValue, Mode = BindingMode.TwoWay }); }