Bonjour,
Voila j'essais de faire un UserControl avec un style contenant un triggers.
Probleme quand j'applique le style a mon userControl il me dis :
JMBSearchControl' TargetType does not match type of element 'UserControl'.
Le but de ce style c'est que si l'utilisateur referencie la propriete DisplayDataAtOpening a 1, la proprieter VResultVisibility sera Visible et a Collapsed si DisplayDataAtOpening est a 0. Ensuite la ligne en rouge de mon xaml sera binder sur VResultVisibility.
Est-ce que quelqu'un peut me dire ce qui ne va pas dans mon code S'il vous plait?
Aussi la proprieter est de type int. Idealement j'aimerais qu'elle soit de type bool mais il semblerait avoir un probleme avec les dependency properties et les bool de ce que j'ai pu lire sur une discussion du forum. Mais bon ceci est un tous petit détails. La question principal est : C'est quoi qui cloche dans mon style ou mon usercontrol?
Merci Beaucoup.
xaml du userControl.
Le code behind pour les dependency properties
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 <UserControl x:Class="JMB.FRAMEWORK.WPF.UserControls.JMBSearchControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:jmb="clr-namespace:JMB.Framework.WPF;assembly=JMB.Framework.WPF" xmlns:jmbGrid="http://schemas.microsoft.com/wpf/2008/toolkit" xmlns:local="clr-namespace:JMB.FRAMEWORK.WPF.UserControls" Height="544" Width="422" Style="{DynamicResource TriggerStyle}"> <UserControl.Resources> <Style x:Key="TriggerStyle" TargetType="{x:Type local:JMBSearchControl}"> <Style.Triggers> <Trigger Property="DisplayDataAtOpening" Value="1"> <Setter Property="VResultVisibility" Value="Visible"/> </Trigger> <Trigger Property="DisplayDataAtOpening" Value="0"> <Setter Property="VResultVisibility" Value="Collapsed"/> </Trigger> </Style.Triggers> </Style> </UserControl.Resources> <!--Definition du controle--> <Grid Width="379" Height="507" Name="_grdMain"> <StackPanel Orientation="Vertical"> <jmb:View jmb:ViewItem.LabelPadding="3" jmb:ViewItem.LabelPosition="Left" Name="vSearch" Height="150" MinHeight="32.35" MinWidth="365" Width="371" Margin="3.2,10,14.5,0" VerticalAlignment="Top" jmb:ViewItem.ContentPadding="2" > <jmb:View.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical"></StackPanel> </ItemsPanelTemplate> </jmb:View.ItemsPanel> <TextBox Name="txtSearch1" TextChanged="txtSearch1_TextChanged" Height="25" Width="290" jmb:ViewItem.LabelContent="Critère1"/> <TextBox Name="txtSearch2" Height="25" Width="290" jmb:ViewItem.LabelContent="Critère1"/> <TextBox Name="txtSearch3" Height="25" Width="290" jmb:ViewItem.LabelContent="Critère1"/> <TextBox Name="txtSearch4" Height="25" Width="290" jmb:ViewItem.LabelContent="Critère1"/> <Button Click="btnSearch_Click" Name="btnSearch" Width="25" Height="25" IsEnabled="False"></Button> </jmb:View> <jmb:View Margin="0,5" Name="vResult" Height="335" Width="369" Visibility="{Binding Path=VResultVisibility}"> <ListView Margin="0,5" Name="lstResult" Width="369" Height="327" MinHeight="327" MinWidth="369"> <ListView.View> <GridView> <GridViewColumn Header="ID" DisplayMemberBinding="{Binding Path=ENTITEMD_ID}"></GridViewColumn> <GridViewColumn Header="NOM TABLE DB" DisplayMemberBinding="{Binding Path=ENTITEMD_NOM_TABLE_DB}"></GridViewColumn> <GridViewColumn Header="Definition L01" DisplayMemberBinding="{Binding Path=ENTITEMD_DEFINITION_L01}"></GridViewColumn> </GridView> </ListView.View> </ListView> </jmb:View> </StackPanel> </Grid> </UserControl>
Pascal Wick
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 /// <summary> /// Doit on afficher les données a l'ouverture du control /// ou doit on attendre que l'utilisateur /// effectue une recherche /// </summary> public int DisplayDataAtOpening { get { return (int)GetValue(DisplayDataAtOpeningProperty); } set { SetValue(DisplayDataAtOpeningProperty, (int)value); } } public static DependencyProperty DisplayDataAtOpeningProperty = DependencyProperty.Register("DisplayDataAtOpening", typeof(int), typeof(JMBSearchControl)); public Visibility VResultVisibility { get { return (Visibility)GetValue(VResultVisibilityProperty); } set { SetValue(VResultVisibilityProperty, (Visibility)value); } } public static DependencyProperty VResultVisibilityProperty = DependencyProperty.Register("VResultVisibility", typeof(Visibility), typeof(JMBSearchControl));
Programmeur-Analyste Sr.
Partager