silverlight-4.0 - 如何在用户控件后面的代码中触发按钮 Click 事件?

标签 silverlight-4.0

是否可以在用户控件后面的代码中触发按钮 Click 事件?

最佳答案

在 C# 中,事件只能从声明它们的类中调用。在 Button 的情况下,有一个名为 OnClick 的方法会引发 ClickEvent 但它受到保护。所以你需要声明继承自Button的类并改变OnClick方法的可见性(或者声明一些调用base.OnClick的over方法)

public class MyButton : Button
{
    public new void OnClick()
    {
        base.OnClick();
    }
}

XAML 示例
<StackPanel Background="White" >
    <my:MyButton x:Name="TestButton" Click="HandleClick" Content="Test" />
    <TextBlock x:Name="Result" />
</StackPanel>

和后面的代码:
public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
        new Timer(TimerCall,null,0,1000);
    }

    private void TimerCall(object state)
    {
        Dispatcher.BeginInvoke(()=>TestButton.OnClick());
    }

    private void HandleClick(object sender, RoutedEventArgs e)
    {
        Result.Text = String.Format("Clicked on {0:HH:mm:ss}",DateTime.Now);
    }
}

虽然直接调用事件处理程序总是更容易。
HandleClick(this,null)

这样就不需要额外的管道了。

关于silverlight-4.0 - 如何在用户控件后面的代码中触发按钮 Click 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3587412/

相关文章:

flash - 为什么 Silverlight 或 Flash 不实现 UDP 套接字?

xaml - 使用 Silverlight 4 将焦点设置到 XAML 中的 UIElement (即 TextBox )?

c# - 构建网络用户界面

c# - 扩展方法的问题

c# - silverlight 数据网格单元编辑

silverlight - 使用 WCF RIA Services SP1 如何通过 Entity Framework 复杂类型使用存储过程?

c# - silverlight 4 MVVM如何使用两种形式在网格上编辑EF4

silverlight - TreeViewItem.ItemContainerGenerator.ContainerFromItem 结果不一致

silverlight - 用户在Windows Phone 7中开始讲话后就立即开始录音?

silverlight - PagedCollectionView自定义排序