Question

J'essaie de gérer un événement dans un ItemsControl ControlTemplate. J'ai assigné les événements MouseUp et MouseDown d'un bouton (btnRight ci-dessous). Le problème est que lorsque je clique sur le bouton, l'événement n'atteint jamais mon code-behind. Comment fonctionnent les événements dans les ControlTemplates et que dois-je faire pour les relier? J'ai essayé d'affecter les événements au bouton dans code-behind lors de l'événement OnApplyTemplate, mais en vain.

Merci pour votre aide!

<ItemsControl.Template>
    <ControlTemplate>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="36" />
                <ColumnDefinition />
                <ColumnDefinition Width="36" />
            </Grid.ColumnDefinitions>
            <Button x:Name="btnLeft" Grid.Column="0" Height="36">
                <Button.Template>
                    <ControlTemplate>
                        <Image>
                            <Image.Source>
                                <BitmapImage UriSource="Images\left.png" />
                            </Image.Source>
                        </Image>
                    </ControlTemplate>
                </Button.Template>
            </Button>
            <Border Grid.Column="1" BorderBrush="Black" BorderThickness="1" Background="Black" Padding="6">
                <ItemsPresenter Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=MarginOffset}" />
            </Border>
            <Button x:Name="btnRight" Grid.Column="2" Height="36" MouseUp="btnRight_MouseUp" MouseDown="btnRight_MouseDown">
                <Button.Template>
                    <ControlTemplate>
                        <Image>
                            <Image.Source>
                                <BitmapImage UriSource="Images\right.png" />
                            </Image.Source>
                        </Image>
                    </ControlTemplate>
                </Button.Template>
            </Button>
        </Grid>
    </ControlTemplate>
</ItemsControl.Template>
Était-ce utile?

La solution

Au lieu d'utiliser des événements de clic de bouton, créez une nouvelle commande, liez la propriété Command du bouton à la commande que vous avez créée, puis ajoutez un CommandBinding à votre contrôle utilisateur pour gérer la commande lorsqu'elle est exécutée.

Voir ici pour plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top