我有這個LongListSelector
在一個頁面:LongListSelector和文本菜單返回錯誤的項目
<Controls:LongListSelector Height="Auto" x:Name="historylist" HorizontalContentAlignment="Stretch"
Background="Black" SelectionChanged="DidPressSelectItem">
<Controls:LongListSelector.ItemTemplate>
<DataTemplate>
<local:SearchTemplateSelector Content="{Binding}" HorizontalContentAlignment="Stretch">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu Opened="ContextMenu_Opened">
<toolkit:MenuItem Header="Edit" Click="EditVideo"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
.
.
.
.
</local:SearchTemplateSelector>
</DataTemplate>
</Controls:LongListSelector.ItemTemplate>
這是EditVideo
private void EditVideo(object sender, RoutedEventArgs e)
{
VideoItem selectedVideo = (sender as MenuItem).DataContext as VideoItem;
if (video == null) { return; }
//Do Stuff
this.RelodeTableData();
}
而且RelodeTableData
:
private void RelodeTableData()
{
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
{
searchResults.Clear();
for (int i = 0; i < historyRep.historyArray.Count; i++)
{
VideoItem item = historyRep.historyArray[i];
searchResults.Add(item);
}
});
}
問題是,當用戶編輯一個項目並嘗試編輯另一個項目後,他得到他編輯的最後一個項目selectedVideo
。
我編輯它後使用ReloadTableData刷新列表數據。
「searchResults」集合是「ObservableCollection」的一個實例嗎? – Haspemulator 2013-02-19 10:50:48
是:ObservableCollection searchResults = new ObservableCollection (); –
MTA
2013-02-19 10:56:09
所以你的意思是爲用戶顯示正確的視頻項目,但錯誤的DataContext出現在事件處理程序內? – Haspemulator 2013-02-19 12:49:09