2012-01-13 14 views
1

我對Silverlight的世界相當陌生,所以請耐心等待。我已經創建了一個自定義數據透視表項控件,以顯示在透視控件中。現在在這個自定義控件中有一個按鈕。現在,我可以將點擊事件處理程序添加到自定義控件的後臺cs文件中的按鈕,那就沒問題了。但是有沒有辦法讓我在自定義控件的聲明過程中指定自定義控件按鈕的事件處理程序?即像這樣在我的pivot_page.xaml如何通過silverlight中的依賴屬性實現點擊事件?

<custom:myPivotItem background="..." height=".." width=".." click="myHandler"/> 

其中myHandler在pivot_page.cs中聲明?謝謝

回答

1

通過在自定義聲明一個RoutedEventHandler解決它控制CS文件(myCustomPivotItem.cs)。

public event RoutedEventHandler Click; 

然後在onApplyTemplate我得到

Rectangle rect = this.GetTemplateChild("rectObject") as Rectangle; 
rect.Tap += new EventHandler<GestureEventArgs>(RectView_Tap); 

我然後在相同的CS文件中聲明RectView_Tap訪問矩形對象(myCustomPivotItem.cs)

private void RectView_Tap(object sender, GestureEventArgs e) 
    { 
     if (Click != null) 
      Click(this, new RoutedEventArgs()); 
    } 
在我的MainPage

。 xaml我宣佈自定義控件像這樣

<controls:PivotItem x:Name="pivotitem2"> 
    <view:myCustomePivotItem x:Name="custompivotItem2" Click="myHandler"/> 
</controls:PivotItem> 

和MainPage.cs我宣佈將myHandler ...

void myHandler(object sender, RoutedEventArgs e) 
    { 
     //delegate operation 
     MessageBox.Show("Clicked!"); 
    } 

和它的作品如預期! :)希望它可以幫助任何需要它的人。

1

您可以在映射到按鈕的單擊事件的自定義控件上公開一個公共事件。

public event RoutedEventHandler Click 
{ 
    add { this.button.Click += value; } 
    remove { this.button.Click -= value; } 
} 
+0

謝謝你的按鈕,我嘗試將它應用到一個矩形的Tap事件,這是一個EventHandler 類型,它不起作用。我甚至爲它添加了一個依賴項屬性,但我得到一個異常。有任何想法嗎? – 2012-01-13 05:34:33

+0

@Cool Dude - 你應該可以使用相同的方法,但你的事件也必須定義爲EventHandler 類型:'公共事件EventHandler 點擊{add {...} remove {。 ..}}' – 2012-01-13 05:52:53

+0

現在我得到一個空指針異常,因爲在調用onApplyTemplate()之前,公共事件屬性中引用了矩形對象。 – 2012-01-13 07:21:30