我有一个自定义的WPF行及其样式。用户控件资源:
<!-- Framework properties to update -->
<SolidColorBrush x:Key="MyLineBrush" Color="LightGreen" />
<sys:Double x:Key="MyLineStrokeThickness">1</sys:Double>
<!-- Custom property to update -->
<sys:Boolean x:Key="MyLineIsArrowUsed">false</sys:Boolean>
<Style TargetType="local:MyLine" x:Key="MyLineStyleKey">
<!-- AutoUpdates the control -->
<Setter Property="Fill"
Value="{DynamicResource MyLineBrush}"/>
<Setter Property="StrokeThickness"
Value="{DynamicResource MyLineStrokeThickness}" />
<!-- does NOT AutoUpdate the control -->
<Setter Property="ShowText"
Value="{DynamicResource MyLineIsArrowUsed}"/>
现在,当我更新
MyLineStrokeThickness
控件立即更新。
但当我更新自定义依赖项属性时
MyLineIsArrowUsed
没有变化。
更新自定义依赖项属性后,应使用什么来更新自定义控件(行)图形?
我试过:
static void OnIsArrowUsedChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
var s = (MyLine)source;
s.UpdateLayout();
}
但这不管用。
只有当我移动控件或在强制重新绘制控件本身时执行其他操作时,该控件才会更新。