У меня есть пользовательская линия WPF и ее стиль.Ресурсы UserControl:
<!-- 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();
}
но это не работает.
Элемент управления обновляется только тогда, когда я перемещаю его или выполняю другие действия, когда он вынужден перерисовывать себя.