如何对模板控件中的按钮单击做出反应

罗宾·曼努埃尔·蒂尔

我编写了一个自定义模板控件,其中包含一个按钮:

<ControlTemplate TargetType="local:IncrementalFlipView">
    <Border
        Background="{TemplateBinding Background}"
        BorderBrush="{TemplateBinding BorderBrush}"
        BorderThickness="{TemplateBinding BorderThickness}">

        <StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Center">
            <Button Content="^" x:Name="PreviousPageButton" Click="Button_Click"/>
            <TextBlock Text="1" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0" FontSize="16" />
            <Button Content="v" x:Name="NextPageButton"/>
        </StackPanel>

    </Border>
</ControlTemplate>

我的问题是,我不知道如何对按钮的单击事件做出反应。Button_Click(object sender, RoutedEventArgs e)在模板控件的代码中实现了一个事件处理程序,但未捕获按钮的click事件。

public sealed class IncrementalFlipView : Control
{
    public IncrementalFlipView()
    {
        this.DefaultStyleKey = typeof(IncrementalFlipView);
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Debug.WriteLine("Clicked!");
    }
}

知道如何应对该点击事件吗?

正确的方法(我的观点)是使用Command Bindings您的模板化控件中的样式化按钮将如下所示:

 <Button Command="{Binding DataContext.BackCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type YourUIType}}}"                                      CommandParameter="{Binding}" />

您的类型AncestorType取决于您使用的UI元素。

在主窗口中,您应该定义Command

private RelayCommand _backCommand;
public ICommand BackCommand
{
    get { return _backCommand ?? (_backCommand = new RelayCommand(Back)); }
}

如果您通过Internet访问,则将看到RelayCommandICommand接口的基本定义(请参见[here])。1个

然后,您只需要定义该Back方法(它具有一个paramethrized对象):

private void Back(object obj)
{
    // Go back command
    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何对pyqt5中的按钮单击做出反应

来自分类Dev

按钮仅在单击/触摸右侧时对单击/触摸做出反应

来自分类Dev

单击拖动并在onClick中做出反应?

来自分类Dev

如何在单击按钮时做出反应以更改变量值

来自分类Dev

如何在控件模板的一部分中向按钮添加“单击”处理程序?

来自分类Dev

为什么这些几乎相同的HTML表单中只有一种会对提交按钮单击做出反应?

来自分类Dev

如何检查是否单击了用户控件中的按钮?

来自分类Dev

如何对baconJS中的takeUntil流做出反应

来自分类Dev

如何对Go中的按键事件做出反应?

来自分类Dev

如何对baconJS中的takeUntil流做出反应

来自分类Dev

如何对超电网中的onclick做出反应

来自分类Dev

如何使 NavBar 中的 onClick 事件做出反应?

来自分类Dev

如何对列表中的行点击做出反应?

来自分类Dev

如何让 Gtk.Iconview 对单击而不是双击做出反应?

来自分类Dev

使用asyncio对matplotlib中的鼠标单击事件做出反应

来自分类Dev

在块相同名称类(jQuery)中单击按钮后如何做出不同的动作?

来自分类Dev

如何使放置在 UICollectionView 顶部的按钮对点击做出反应?

来自分类Dev

在代码中创建的按钮不会对其事件做出反应

来自分类Dev

单击按钮在WPF中添加动态控件

来自分类Dev

jsf按钮在第二次单击后做出反应

来自分类Dev

如何单击反应中的裁判

来自分类Dev

如何获取指令以对组件中的EventEmitter做出反应

来自分类Dev

如何使功能组件中可维护的状态负载做出反应?

来自分类Dev

如何在单个prop中传递多个值以做出反应?

来自分类Dev

如何对指令的链接功能中的绑定对象做出反应

来自分类Dev

如何对 SimpleForm Inputs 中的变化做出反应?

来自分类Dev

如何让 C# 中的程序对用户输入做出反应

来自分类Dev

如何以编程方式单击Web浏览器控件中的Facebook“发布”按钮

来自分类Dev

如何在另一个项目中引用的用户控件中单击呼叫按钮?

Related 相关文章

  1. 1

    如何对pyqt5中的按钮单击做出反应

  2. 2

    按钮仅在单击/触摸右侧时对单击/触摸做出反应

  3. 3

    单击拖动并在onClick中做出反应?

  4. 4

    如何在单击按钮时做出反应以更改变量值

  5. 5

    如何在控件模板的一部分中向按钮添加“单击”处理程序?

  6. 6

    为什么这些几乎相同的HTML表单中只有一种会对提交按钮单击做出反应?

  7. 7

    如何检查是否单击了用户控件中的按钮?

  8. 8

    如何对baconJS中的takeUntil流做出反应

  9. 9

    如何对Go中的按键事件做出反应?

  10. 10

    如何对baconJS中的takeUntil流做出反应

  11. 11

    如何对超电网中的onclick做出反应

  12. 12

    如何使 NavBar 中的 onClick 事件做出反应?

  13. 13

    如何对列表中的行点击做出反应?

  14. 14

    如何让 Gtk.Iconview 对单击而不是双击做出反应?

  15. 15

    使用asyncio对matplotlib中的鼠标单击事件做出反应

  16. 16

    在块相同名称类(jQuery)中单击按钮后如何做出不同的动作?

  17. 17

    如何使放置在 UICollectionView 顶部的按钮对点击做出反应?

  18. 18

    在代码中创建的按钮不会对其事件做出反应

  19. 19

    单击按钮在WPF中添加动态控件

  20. 20

    jsf按钮在第二次单击后做出反应

  21. 21

    如何单击反应中的裁判

  22. 22

    如何获取指令以对组件中的EventEmitter做出反应

  23. 23

    如何使功能组件中可维护的状态负载做出反应?

  24. 24

    如何在单个prop中传递多个值以做出反应?

  25. 25

    如何对指令的链接功能中的绑定对象做出反应

  26. 26

    如何对 SimpleForm Inputs 中的变化做出反应?

  27. 27

    如何让 C# 中的程序对用户输入做出反应

  28. 28

    如何以编程方式单击Web浏览器控件中的Facebook“发布”按钮

  29. 29

    如何在另一个项目中引用的用户控件中单击呼叫按钮?

热门标签

归档