В C # события могут вызываться только из класса, который их объявляет.В случае с Button есть метод OnClick, который вызывает ClickEvent, но он защищен.Поэтому вам нужно объявить класс, который наследуется от Button, и изменить видимость метода OnClick (или объявить некоторый метод over, который вызывает base.OnClick)
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)
Тогда больше не понадобится дополнительная сантехника.