2012-02-15 140 views
1

我已經在WP7應用程序中有一個列表框,我想在用戶按住某個項目時執行某項操作。這項活動非常棒。我的保留方法被調用,但我無法檢測列表中的哪個元素被保留。 ListBox.SelectedItem始終是-1,從計算器另一個崗位代碼好好嘗試一下工作:從保存列表框中獲取選定的項目

FrameWorkelement element = (FrameworkElement) e.OriginalSource; 
ItemViewModel item = (ItemViewModel) element.DataContext; 

在第二行中運行時,我得到一個InvalidCastException。

回答

5

下面的代碼應該可以工作。

private void StackPanel_Hold(object sender, GestureEventArgs e) 
{ 
    ItemViewModel itemViewModel = (sender as StackPanel).DataContext as ItemViewModel; 
    string t = itemViewModel.LineOne; 
} 

注意:在使用發件人對象的DataContext之前,請確保將發件人對象轉換爲正確的類。在這個例子中,我在我的DataTemplate中使用了一個StackPanel:

<ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Margin="0,0,0,17" Height="78" Hold="StackPanel_Hold"> 
       <TextBlock Text="{Binding LineOne}" /> 
       <TextBlock Text="{Binding LineTwo}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
相關問題