Frage

Ich erstelle derzeit ein Textfeld mit einem Wasserzeichen -Text und habe ein kleines Styling -Problem. Um das Wasserzeichen selbst zu erstellen, habe ich den hier erläuterten Code aufgenommenWatermark / Hinweis Text / Platzhaltertextkasten in WPFIch habe die akzeptierte Antwort nicht verwendet, aber die mit den höchsten Stimmen. (derjenige, der verziert ist)

Mein Textblock sieht so aus:

<AdornerDecorator>
    <TextBox HorizontalAlignment="Right"
                VerticalAlignment="Center"
                Width="190"
                Padding="16,2,20,2">
        <utils:WatermarkService.Watermark>
            <TextBlock Text="Search" />
        </utils:WatermarkService.Watermark>
    </TextBox>
</AdornerDecorator>

Jetzt bin ich vor dem Problem, dass der Textblock mit dieser angehängten Eigenschaft aus meinem Styling in App.xaml aus dem Spielraum herauskommt. Das Styling sieht so aus:

<Style TargetType="{x:Type Window}">
    <Setter Property="FontFamily"
            Value="Tahoma" />
    <Setter Property="FontSize"
            Value="8pt"></Setter>
    <Setter Property="Background"
            Value="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}" />
</Style>

Wie ist es möglich, den Textblock in der beigefügten Eigenschaft in app.xaml zu stylen, die mit basiert auf diesem Stil vorzuziehen ist, damit ich es nicht für Serval -Zeiten deklarieren muss.

War es hilfreich?

Lösung

Declare same style for TextBlock auch in Application resources. Auf diese Weise wird es auf alle Textblöcke in Ihrer Bewerbung angewendet, unabhängig davon, ob sie Teil von Erwiderern oder Fenstern sind.

<Style TargetType="{x:Type TextBlock}">
   <Setter Property="FontFamily"
           Value="Tahoma" />
   <Setter Property="FontSize"
           Value="8pt"></Setter>
   <Setter Property="Background"
         Value="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}"/>
</Style>

AKTUALISIEREN

Wenn Sie Ressourcen nicht duplizieren möchten, können Sie am besten die Verwendung erhalten Label Anstatt von TextBlock. Auf diese Weise können Sie einen Stil anwenden lassen Control und kann Stile für abgeleiten Window und Label davon.

Aber das wird nicht funktionieren für TextBlock da es nicht aus abgeleitet ist Control.

   <Style TargetType="Control" x:Key="BaseStyle">
        <Setter Property="FontFamily" Value="Tahoma" />
        <Setter Property="FontSize" Value="8pt"></Setter>
        <Setter Property="Background" 
        Value="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}"/>
    </Style>

    <Style TargetType="{x:Type Window}"
           BasedOn="{StaticResource BaseStyle}"/>
    <Style TargetType="{x:Type Label}"
           BasedOn="{StaticResource BaseStyle}"/>

Wenn Sie dann anstelle von Textblock im AdornerDecorator im AdornerDecorator verwendet werden, funktioniert es einwandfrei.

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