В WPF, как я могу обработать событие в ItemControl ControlTemplate

StackOverflow https://stackoverflow.com/questions/1408065

Вопрос

Я пытаюсь обработать событие внутри ItemsControl ControlTemplate. Я назначил события MouseUp и MouseDown кнопки (btnRight ниже). Проблема в том, что когда я нажимаю на кнопку, событие никогда не достигает моего кода. Как работают события в ControlTemplates и что мне нужно сделать, чтобы подключить это? Я пытался назначить события кнопке в выделенном фрагменте кода во время события OnApplyTemplate, но безрезультатно.

Спасибо за вашу помощь!

<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>
Это было полезно?

Решение

Вместо использования событий нажатия кнопки создайте новую команду, свяжите свойство Command кнопки с созданной вами командой, а затем добавьте привязку CommandBinding к своему пользовательскому элементу управления для обработки команды при ее выполнении.

См. здесь для получения дополнительной информации .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top