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
Hallo manullino,
zeige uns doch mal bitte wie du es versucht hast
denn eigentlich sollte klappen
Herzliche Grüße
Lars
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">
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>