Mon réutilisable Bouton est essentiellement un seul bouton, dont ControlTemplate se compose d'un TextBlock et une image . La propriété Text de TextBlock se lie à un DependencyProperty à exposer; de même, Source propriété de Image se lie à un DependencyProperty. Voici le code pour ce Button.Comment affecter un EventTrigger à un bouton réutilisable dans son parent?
<Button x:Class="Core.Resource.UserControlResource.NavigationButton1"
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:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Core.Resource.UserControlResource"
mc:Ignorable="d"
x:Name="myself">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="63"></ColumnDefinition>
<ColumnDefinition Width="63"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Name="IconImage" Height="42" Width="42" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Source="{Binding ElementName=myself, Path=ScreenIcon}" />
<TextBlock Grid.Column="1" Text="{Binding ElementName=myself, Path=ScreenTitle}" FontSize="25" TextWrapping="Wrap" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>
où ScreenTitle et screenicon sont les précité DependecyProperty.
Maintenant, je veux utiliser ce bouton dans son "parent", un UserControl. Le code sera comme
<UserControl x:Class="Core.ParentControl"
x:Name="parent"
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:usrCtrlResrc="clr-namespace:Core.Resource.UserControlResource;assembly=Core.Resource"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32"/>
<ColumnDefinition Width="32"/>
<Grid.ColumnDefinitions>
<usrCtrlResrc:NavigationButton1 ScreenTitle="sample Screen Title" ScreenIcon="/Core.Resource;component/MediaResource/pencilEdit.png">
<TextBlock Grid.Column="1" Name="txtBlk" Text="SampleSample"/>
</Grid>
Cependant, afin d'ajouter des réactions lorsque le bouton est cliqué (par exemple pour changer le Grid.ColumnSpan propriété de TextBlock "txtBlk" à 2), ce que je veux faire d'autre est d'attribuer EventTriggers à mon réutilisable Button dans le "parent". J'ai d'abord pensé à deux façons, mais aucune d'entre elles ne fonctionne.
- Dans mon réutilisable Bouton, lier Style.Triggers à un DependencyProperty pour obtenir exposés à son "parent". Cependant, il apparaît "La propriété Triggers n'a pas de setter accessible".
- Déplacer le style de mon réutilisable Bouton à un ResourceDictionary et lui attribuer une clé pour le « parent » à utiliser. Cependant, en faisant ceci, je ne suis pas sûr comment manipuler mes deux DependencyProperty, parce qu'il n'est pas censé avoir le code-derrière pour un fichier ResourceDictionary.
Autres solutions de contournement? Merci d'avance.