Domanda

Sto cercando di gestire un evento all'interno di un ItemsTontrol ControlTemplate. Ho assegnato gli eventi MouseUp e MouseDown di un pulsante (btnDestra in basso). Il problema è che quando faccio clic sul pulsante, l'evento non raggiunge mai il mio codice. Come funzionano gli eventi in ControlTemplates e cosa devo fare per collegarlo? Ho provato ad assegnare gli eventi al pulsante in code-behind durante l'evento OnApplyTemplate senza risultati.

Grazie per l'aiuto!

<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>
È stato utile?

Soluzione

Invece di utilizzare gli eventi clic sui pulsanti, crea un nuovo comando, associa la proprietà Command del pulsante al comando che hai creato, quindi aggiungi un CommandBinding al controllo utente per gestire il comando quando viene eseguito.

Vedi qui per ulteriori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top