Domanda

Voglio ridisegnare solo una parte di un controllo WPF.

(In particolare, voglio ingrandire i pulsanti di scorrimento su una barra di scorrimento)

Ora posso farlo senza problemi. Ho estratto lo stile predefinito. Ho apportato le modifiche necessarie e incluso lo stile modificato nella mia applicazione.

Il problema è che devo includere l'intero modello di controllo nello stile di sostituzione, quando tutto ciò che sto cambiando è di 2 valori.

  <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

Voglio solo cambiare MaxWidth sulle definizioni delle colonne in 50.

Quindi la mia domanda è questa: c'è un modo in cui posso apportare questa modifica al modello senza dover includere tutto il resto? Voglio ancora che tutte le altre parti del modello di controllo funzionino come quelle predefinite.

È stato utile?

Soluzione

In questo caso dovresti essere in grado di farlo, poiché il modello raggiunge e prende il valore da una risorsa:

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

Se il modello avesse codificato il valore, sarebbe sfortunato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top