2012-02-15 7 views
1

WP7アプリケーションでListBoxを持っているので、アイテムを保持しているときに何かしたいアイテムがあります。イベントワークは素晴らしいです。私の保留メソッドが呼び出されますが、リスト内のどの要素が保持されているかは検出できません。 ListBox.SelectedItemは常に-1とstackoverflowのdoens't仕事上の別のポストからのコード:ListBoxから選択したアイテムを保留にする

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> 
関連する問題