2010-08-27 4 views

Antwort

5

In C# können Ereignisse nur von der Klasse aufgerufen werden, die sie deklariert. Im Fall des Buttons gibt es eine Methode namens OnClick, die das ClickEvent auslöst, aber geschützt ist. Sie müssen also Klasse deklarieren, die von Knopf erbt und die Sichtbarkeit der OnClick Methode ändern (oder einige über Methode deklarieren, die base.OnClick nennt)

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

Beispiel für XAML

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

Und Code hinter:

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); 
    } 
} 

Obwohl es immer einfacher ist, Event-Handler direkt aufzurufen.

HandleClick(this,null) 

Dann ist keine zusätzliche Installation erforderlich.

+0

danke. sehr interessante Lösung. werde versuchen. – KentZhou

Verwandte Themen