use*_*698 1 c# listbox windows-phone-7
我在WP7应用程序中有一个ListBox,我希望在用户持有它时对某个项目执行某些操作.活动工作很棒.我的hold方法被调用,但我无法检测列表中的哪个元素被保存.ListBox.SelectedItem始终为-1,而stackoverflow上另一个帖子的代码不起作用:
FrameWorkelement element = (FrameworkElement) e.OriginalSource;
ItemViewModel item = (ItemViewModel) element.DataContext;
Run Code Online (Sandbox Code Playgroud)
我在第二行运行时遇到InvalidCastException.
小智 5
以下代码应该有效.
private void StackPanel_Hold(object sender, GestureEventArgs e)
{
ItemViewModel itemViewModel = (sender as StackPanel).DataContext as ItemViewModel;
string t = itemViewModel.LineOne;
}
Run Code Online (Sandbox Code Playgroud)
注意:在使用sender对象的DataContext之前,请确保将sender对象强制转换为正确的类.在这个例子中,我在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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1906 次 |
| 最近记录: |