Laden...

ResourceDictionary - meherere Controls vom selben Typ

Erstellt von manullino vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.770 Views
manullino Themenstarter:in
371 Beiträge seit 2008
vor 14 Jahren
ResourceDictionary - meherere Controls vom selben Typ

Hallo zusammen,

in meinem ResourceDictionary sind die Styles von allen Controls hinterlegt.
Nun moechte ich aber mehere Controls vom selben Typen definieren.

Beispiel:

Der generelle Tooltip hat einen blauen Hintergrund.
Der Tooltip fuer meine Textboxen soll einen roten Hintergrund haben.

Die Idee, die ich hatte ist, dem "roten" Tooltip Style einen Name zu geben und dieser Style dann der Textbox (innerhalb des ResourceDictionary) zu zuweisen. Scheint aber nicht zu klappen...

Hat jemand eine Idee?

Vielen Dank,
Manullino

2.223 Beiträge seit 2005
vor 14 Jahren

Hallo manullino,

zeige uns doch mal bitte wie du es versucht hast

denn eigentlich sollte klappen

Herzliche Grüße
Lars

manullino Themenstarter:in
371 Beiträge seit 2008
vor 14 Jahren

Prinzipell handelt es sich um die Themes des WPF Toolkits.
Nur habe ich dort ein paar Kleinigkeit (Design) geaendert.

So wie ich das verstehe, kann das selbe Controll nicht zwei mal im selben RD verwendet werden?!

Hier der Code fuer die Tooltips.

ToolTip 1:


<!--ToolTip-->
        <Style TargetType="ToolTip">
            <Setter Property="Foreground" Value="{StaticResource TextBrush}" />
            <Setter Property="Background" Value="{StaticResource PrimaryBrush}" />
            <Setter Property="Padding" Value="5,3,5,3" />
            <Setter Property="BorderBrush">
       ...
            </Setter>
        </Style>

ToolTip2:


<Style TargetType="ToolTip" x:Name="RedTooltip">
        <Setter Property="Foreground" Value="Black" />
        <Setter Property="Background" Value="Red" />
        <Setter Property="Padding" Value="5,3,5,3" />
        <Setter Property="BorderBrush">
            <Setter.Value>
       ...
            </Setter>
        </Style>

Fehlermeldung:

Item has already been added. Key in dictionary: 'System.Windows.Controls.ToolTip' Key being added: 'System.Windows.Controls.ToolTip' Error at object 'System.Windows.ResourceDictionary' in markup file 'Ama.Startup.Wpf;component/Themes/AmaBlue.xaml' Line 16 Position 5. Error at object 'System.Windows.ResourceDictionary' in markup file 'Ama.Startup.Wpf;component/app.xaml' Line 5 Position 29."}

Wobei sicher der Fehler auf den Namespace bezieht:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:basic="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
xmlns:primitives="clr-namespace:Microsoft.Windows.Controls.Primitives;assembly=WPFToolkit"
xmlns:vsm="clr-namespace:System.Windows;assembly=WPFToolkit"
mc:Ignorable="d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008">

manullino Themenstarter:in
371 Beiträge seit 2008
vor 14 Jahren

Fehler gefunden! Name ist natuerlich Quatsch, muss der Key sein!

So gehts:

<Style TargetType="ToolTip" x:Key="RedTooltip">
        <Setter Property="Foreground" Value="Black" />
        <Setter Property="Background" Value="Red" />
        <Setter Property="Padding" Value="5,3,5,3" />
        <Setter Property="BorderBrush">
            <Setter.Value>
       ...
            </Setter>
  </Style

>

Aber wie kann ich nun diesen "RedToolTip" dem hier unten verwendeten Tooltip zuweisen? Ds geht leider ueber meine XAML Kenntnisse hinaus...


 <Setter Property="Validation.ErrorTemplate">
            <Setter.Value>
                <ControlTemplate>
                    <DockPanel LastChildFill="True">
                        <TextBlock DockPanel.Dock="Right" 
                               Foreground="Red"
                               FontSize="14pt" 
                               Margin="-15,0,0,0" FontWeight="Bold">*
                        </TextBlock>
                        <Border BorderBrush="Red" BorderThickness="1">
                            <AdornedElementPlaceholder Name="myControl"/>
                        </Border>
                    </DockPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="ToolTip"
                        Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                        Path=(Validation.Errors)[0].ErrorContent}"/>
            </Trigger>
        </Style.Triggers>