[WPF] Style et snon utilisation dans differents fichiers
Bonjour,
J'ai défini un style comme ceci, afin de gérer mes erreurs de validation:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <Style x:Key="validationStyle" TargetType="{x:Type Control}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors),
Converter={WPFTools:ValidationErrorsToStringConverter}}"/>
</Trigger>
</Style.Triggers>
</Style> |
et je l'attribue à differents Editor d'une lib graphique externe comme ceci:
Code:
1 2
| <Style TargetType="{x:Type igEditors:XamComboEditor}" BasedOn="{StaticResource WPFTools:ValidationStyle.ValidationStyle}" />
<Style TargetType="{x:Type igEditors:XamMaskedEditor}" BasedOn="{StaticResource WPFTools:ValidationStyle.ValidationStyle}" / |
ca donne:
MainLayout.xaml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
<UserControl x:Class="Pension.GUI.CreatePensionPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:igEditors="http://infragistics.com/Editors"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:WPFTools="clr-namespace:WPFTools;assembly=WPFTools"
Width="1280" Height="1024" Background="#FFD3E1EE" FontFamily="Arial" FontSize="11" FontWeight="Bold" Foreground="#FF215A74"
>
<UserControl.Resources>
<Style x:Key="validationStyle" TargetType="{x:Type Control}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type igEditors:XamComboEditor}" BasedOn="{StaticResource validationStyle}" />
<Style TargetType="{x:Type igEditors:XamMaskedEditor}" BasedOn="{StaticResource validationStyle}" />
</UserControl.Resources>
<Grid>
... Mon Layout
</Grid>
<UserControl/> |
Maintenant je voudrais que mon style soit dans un fichier XAML externe, pour pouvoir le reutiliser dans d'autres fenetres de mon appli:
J'ai donc créer un fichier StyleValidation.xaml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:igEditors="http://infragistics.com/Editors"
x:Class="WPFTools.ValidationStyle"
xmlns:WPFTools="clr-namespace:WPFTools"
>
<Style x:Key="ValidationStyle" TargetType="{x:Type Control}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors),
Converter={WPFTools:ValidationErrorsToStringConverter}}"/>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary> |
et desormais mon MainLayout.xaml devrait ressembler à:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <UserControl x:Class="Pension.GUI.CreatePensionPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:igEditors="http://infragistics.com/Editors"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:WPFTools="clr-namespace:WPFTools;assembly=WPFTools"
Width="1280" Height="1024" Background="#FFD3E1EE" FontFamily="Arial" FontSize="11" FontWeight="Bold" Foreground="#FF215A74"
>
<Style TargetType="{x:Type igEditors:XamComboEditor}" BasedOn="{StaticResource WPFTools:ValidationStyle.ValidationStyle}" />
<Style TargetType="{x:Type igEditors:XamMaskedEditor}" BasedOn="{StaticResource WPFTools:ValidationStyle.ValidationStyle}" /
<Grid>
... Mon Layout
</Grid>
<UserControl/> |
Le problème c'est que ca me sort une erreur me disant que
Citation:
WPFTools:ValidationStyle.ValidationStyle n'est pas connu.
Comment faire?
Merci.