WPF и AutoRedraw - PullRequest
       7

WPF и AutoRedraw

0 голосов
/ 15 ноября 2010

У меня есть пользовательская линия 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();            
}

но это не работает.

Элемент управления обновляется только тогда, когда я перемещаю его или выполняю другие действия, когда он вынужден перерисовывать себя.

1 Ответ

2 голосов
/ 15 ноября 2010

В объявлении свойства зависимостей добавьте FrameworkPropertyMetadata.AffectsMeasure

http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.affectsmeasure.aspx

...