Frage

Ich will nur einen Teil eines WPF-Steuerelement restyle.

(Insbesondere möchte ich die Scroll-Tasten auf einem ScrollBar größer machen)

Jetzt kann ich dies kein Problem tun. Ich extrahiert den Standardstil. Hergestellt die erforderlichen Verbesserungen und enthielt das modifizierte Stil in meiner Anwendung.

Das Problem ist, dass ich die gesamte Steuervorlage im Ersatz-Stil enthalten müssen, wenn alles, was ich bin zu ändern 2 Werte.

  <Setter Property="Control.Template">
    <Setter.Value>
      <ControlTemplate TargetType="ScrollBar">
        <Grid Background="{TemplateBinding Panel.Background}" SnapsToDevicePixels="True">
          <Grid.ColumnDefinitions>
            <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}" />
            <ColumnDefinition Width="1E-05*" />
            <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}" />
          </... etc

Ich möchte nur die MaxWidth auf den Spaltendefinitionen auf 50 ändern.

Also meine Frage ist: Gibt es eine Möglichkeit, diese auf die Vorlage optimieren machen können, ohne alles andere mit einzubeziehen? Ich mag immer noch alle anderen Teile der Steuer Vorlage genau wie der Standard arbeiten.

War es hilfreich?

Lösung

In diesem Fall sollten Sie in der Lage sein, da die Vorlage erreicht und greift nach dem Wert von einer Ressource:

<ScrollBar xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <ScrollBar.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}">50</sys:Double>
    </ScrollBar.Resources>
</ScrollBar>

Wenn die Vorlage hartcodiert hatte den Wert, würden Sie kein Glück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top