Bonjour,
je cherche à attribuer un event sur le KeyUp d'une InfoTextBox, le problème étant que cette InfoTextBox se trouve dans un template défini dans un ResourceDictionary.
Si quelqu'un peut m'aider...
Merci d'avance.![]()
Bonjour,
je cherche à attribuer un event sur le KeyUp d'une InfoTextBox, le problème étant que cette InfoTextBox se trouve dans un template défini dans un ResourceDictionary.
Si quelqu'un peut m'aider...
Merci d'avance.![]()
Dans ton dictionnary, tu met juste le style/template de ton composant. Le KeyUp, tu peux le mettre:
- sur ta page principale si tu as juste une simple TexTBox à laquelle tu appliques un style/template
- Dans le code de ton CustomControl, si tu en fais un
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
En fait le control de base que j'utilise est un treeview auquel le template donne un visuel particulier:
un Titre + un bouton de fermeture en haut, le visuel classique du treeview au milieu et une infotextbox de recherche en bas.
Dans mon cas, ce que je cherche à faire c'est de configurer le KeyUp de l'InfoTextBox. Voici le style utilisé:
J'ai essayé en utilisant ce code:
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 <Style x:Key="{x:Type TreeView}" TargetType="{x:Type TreeView}"> <Setter Property="OverridesDefaultStyle" Value="True" /> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate x:Name="tvNewStyle" TargetType="{x:Type TreeView}"> <ContentControl x:Name="ccPopupMainMenu"> <Grid x:Name="tvGrid"> <Grid.RowDefinitions> <RowDefinition Height="25"/> <RowDefinition Height="*"/> <RowDefinition Height="20"/> </Grid.RowDefinitions> <DockPanel x:Name="dpHeader" Grid.Row="0" Background="{DynamicResource VerticalBrush}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="15"/> </Grid.ColumnDefinitions> </Grid> <Label HorizontalAlignment="Center" >Menu Principal</Label> <Button x:Name="bClosePopup" Grid.Column="1" Style="{StaticResource CloseTabItemMouseOver}" /> </DockPanel> <Border Grid.Row="1" Name="Border" CornerRadius="1" Background="{StaticResource WindowBackgroundBrush}" BorderBrush="{StaticResource SolidBorderBrush}" BorderThickness="1" > <ScrollViewer Focusable="False" CanContentScroll="False" Padding="4"> <ItemsPresenter /> </ScrollViewer> </Border> <DockPanel x:Name="dpSearch" Grid.Row="2" Background="Aqua" FlowDirection="LeftToRight" VerticalAlignment="Bottom" Height="25" DockPanel.Dock="Bottom" > <Image Height="168" Width="18" Name="ImgSearch" DockPanel.Dock="Right" Margin="8,0,0,0" Source="loupe.jpg"/> <!--TODO ajouter l'evenement KeyUp--> <local2:InfoTextBox x:Name="itbSearch" DockPanel.Dock="Left" Height="20" Margin="5,0" TextBoxInfo="Rechercher"/> </DockPanel> </Grid> </ContentControl> </ControlTemplate> </Setter.Value> </Setter> </Style>
Mais dès le premier if on sort car le contentcontrol est vide.....
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 ContentControl contentcontrol = this._treeview.Template.FindName("ccPopupMainMenu", this._treeview) as ContentControl; if (contentcontrol != null) { Grid grid = contentcontrol.FindName("tvGrid") as Grid; if (grid != null) { DockPanel dockpanel = grid.FindName("dpSearch") as DockPanel; if (dockpanel != null) { InfoTextBox infotextbox = dockpanel.FindName("itbSearch") as InfoTextBox; if (infotextbox != null) { MessageBox.Show(infotextbox.Text.ToString()); } } } }
Si tu vois comment faire marcher ça...... merci d'avance!!!!!
Ce que je ne comprend pas, c'est que tu as bien créé un InfoTextBox alors pourquoi ne pas gérer le KeyUp dedans ? C'est fait pour ca....
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Ce template est dans un ResourceDictionary alors comment renseigner le KeyUp dans ce cas?
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Partager