2013-07-26 42 views
3

我試圖訪問我綁定DataTemplate的對象,具體而言,我只需要一個int值。我通過點擊鏈接的主電網從的DataTemplate內的事件處理程序:從Tap事件中獲取綁定對象

<DataTemplate x:Name="joinTemplate"> 
    <Grid Tag="{Binding index}" DataContext="{Binding}" Tap="select_Click" ...> 
    ... 
    </Grid> 
</DataTemplate> 

我的處理程序是這樣的:

private void select_Click(object sender, System.Windows.Input.GestureEventArgs e) 

的問題是,我仍然無法訪問sender.DataContextsender.Tag 。然而,當我在調試器中運行它並通過Watch觀察它時,我可以通過簡單地擴展「base」兩次來得到DataContext和Tag。這應該意味着我被賦予的對象繼承了這些對象,並且不知何故是原始Grid的子對象,但是,我認爲發件人始終是您綁定處理程序的地址的Grid?爲了得到我點擊的實際元素,我不得不使用這個例子,e.OriginalSource,對吧?

回答

9

只投sender爲適當的類型來訪問DataContext屬性:

((FrameworkElement)sender).DataContext 

然後,以同樣的方式,你必須向你綁定到電網取其類型的值綁定。例如,如果綁定了一個類型爲Model的對象:

var model = (Model)((FrameworkElement)sender).DataContext 
+0

謝謝!工作就像一個魅力:) – user1123530