【问题标题】:Windows 8 Button click programmatically in C# and Xaml在 C# 和 Xaml 中以编程方式单击 Windows 8 按钮
【发布时间】:2012-09-20 09:39:24
【问题描述】:

我想在 C# xaml 中以编程方式单击按钮。我发现没有像 PerformClick 这样的方法。它还有什么替代品。

实际上,我已经设置了 10 个带有 x:Name 的按钮,例如 btn1、btn2、btn3 等... 根据我需要单击这些按钮的数字,我有一个从 1 到 10 的数字。我打算使用

来获得控制权
ParentControl.FindName('btn' + number)

然后从中触发事件。但由于 Windows 8 C# 中没有 PerformClick 方法,因此我需要一个替代方法。

举办活动

【问题讨论】:

  • 按钮是否绑定到ICommand 实例?
  • 没有按钮未绑定到 ICommand

标签: c# xaml button windows-8 .net-4.5


【解决方案1】:

这是怎么做的......

假设您在XAML 文件中定义了这个按钮:

<Button Grid.Column="0" Grid.Row="0" x:Name="DefaultSnooze" Content="Default Snooze" Click="SendToast_Click" Height="34" Width="134"/>

然后在您希望以编程方式触发 Click 事件处理程序代码的代码后面执行此操作:

ButtonAutomationPeer peer = new ButtonAutomationPeer(DefaultSnooze);

IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
invokeProv.Invoke();

我现在对其进行了测试,效果很好。 :)


来源:How to programmatically click a button

【讨论】:

    【解决方案2】:

    你应该可以使用:

    RaiseEvent(new RoutedEventArgs(Button.ClickEvent, myButton));
    

    在 XAML 视图的代码隐藏中。

    RaiseEvent 可用于任何 UIElement 派生类。

    【讨论】:

    • 我尝试使用它,但在引发事件的 UIElement 中没有这些方法。请看上面的快照
    • @BalrajSingh 不不,这不是静态方法。尝试简单地使用“RaiseEvent”,它应该在那里。
    • 我试图找到那个事件。你能告诉我在哪里可以找到它。由于 WinRT 框架对我来说是新的。我试过但找不到。
    • 嗯,它似乎存在于 .NET 4.5 中:msdn
    猜你喜欢
    • 2017-06-17
    • 2017-06-03
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2019-08-05
    • 2017-06-21
    相关资源
    最近更新 更多