2010-08-27 17 views

Odpowiedz

5

W wydarzeniach C# można wywoływać tylko z klasy, która je deklaruje. W przypadku przycisku znajduje się metoda o nazwie OnClick, która podnosi ClickEvent, ale jest chroniona. Więc trzeba zadeklarować klasę, która dziedziczy przycisk i zmienić widoczność metody OnClick (lub zadeklarować niektóre nad metodą, która wywołuje base.OnClick)

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

przykładzie XAML

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

i kod za:

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

Mimo że zawsze łatwiej jest wywołać funkcję obsługi zdarzenia bezpośrednio.

HandleClick(this,null) 

Wtedy nie będzie potrzeby dodatkowej instalacji hydraulicznej.

+0

dzięki. bardzo interesujące rozwiązanie. spróbuję. – KentZhou

Powiązane problemy