gpt4 book ai didi

c# - LongListSelector 和 ContextMenu 返回错误的项目

转载 作者:行者123 更新时间:2023-11-30 13:32:16 24 4
gpt4 key购买 nike

我在页面中有这个 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 刷新列表数据。

最佳答案

好的,经过大量搜索如何解决这个问题。我发现如果我将 Unload 方法添加到 ContextMenu 并且这将清除 DataContext。

private void ContextMenu_Unload(object sender, RoutedEventArgs e)
{
ContextMenu conmen = (sender as ContextMenu);
conmen.ClearValue(FrameworkElement.DataContextProperty);
}

关于c# - LongListSelector 和 ContextMenu 返回错误的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com