C# 导航回页面后无法删除控件(Win 8应用程序)
我有一个平板电脑应用程序(windows 8应用程序),带有起始主页.xaml。在那里,我将ListView绑定到一个ObservableCollection,UpdateSourceTrigger设置为PropertyChanged。。。在这个列表中,我动态创建面板(带有删除按钮)。当我创建按钮,然后单击删除按钮时,一切正常。。面板以漂亮的动画消失。但是,当我创建新面板时。。然后我导航到另一个页面并返回主页,单击“删除”以删除它们不消失的任何面板。。但如果再次导航到另一个页面,然后我返回。面板已卸下。我试着调试这个集合,一切看起来都很好。尝试将UpdateSourceTrigger更改为Explicit并手动调用,但未成功。谢谢你的帮助 HomePage.Xaml中的ListView XamlC# 导航回页面后无法删除控件(Win 8应用程序),c#,xaml,listview,controls,C#,Xaml,Listview,Controls,我有一个平板电脑应用程序(windows 8应用程序),带有起始主页.xaml。在那里,我将ListView绑定到一个ObservableCollection,UpdateSourceTrigger设置为PropertyChanged。。。在这个列表中,我动态创建面板(带有删除按钮)。当我创建按钮,然后单击删除按钮时,一切正常。。面板以漂亮的动画消失。但是,当我创建新面板时。。然后我导航到另一个页面并返回主页,单击“删除”以删除它们不消失的任何面板。。但如果再次导航到另一个页面,然后我返回。面板
<ListView x:Name="CListView" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="40, 0, 50, 50"
SelectionMode="None" IsItemClickEnabled="True" ItemClick="CListView_OnItemClick"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollMode="Auto"
ScrollViewer.VerticalScrollMode="Disabled"
ScrollViewer.ZoomMode="Disabled"
ScrollViewer.IsHorizontalScrollChainingEnabled="True"
ItemsSource="{Binding Path=ClControls, ElementName=HomePageElementName, UpdateSourceTrigger=PropertyChanged}">
<ListView.ItemContainerStyle>
HomePage.xaml.cs
记忆
public ObservableCollection<IClControl> ClControls
{
get { return _clEvents; }
set
{
_clEvents = value;
OnPropertyChanged();
}
}
private async void ClControl_OnItemRemove(object sender, ClControlRemoveItemArgs e)
{
var control = sender as ClControl;
if (control == null)
return;
var clEvent = e.ClEventInfo;
// control.OnItemRemove -= ClControl_OnItemRemove;
if (ClControls.Contains(control))
{
ClControls.Remove(control);
}
if (SessionHolder.Instance.ClControls.Contains(control))
{
SessionHolder.Instance.ClControls.Remove(control);
}
await clEvent.Delete();
}
公共可观测采集控制
{
获取{return\u clEvents;}
设置
{
_聪明=价值;
OnPropertyChanged();
}
}
私有异步void ClControl\u OnItemRemove(对象发送方,clcontrolremovietemargs e)
{
var control=发送方作为ClControl;
if(control==null)
返回;
var clEvent=e.Cleventifo;
//control.OnItemRemove-=ClControl\u OnItemRemove;
if(ClControls.Contains(control))
{
ClControls。移除(控制);
}
if(SessionHolder.Instance.ClControls.Contains(控件))
{
SessionHolder.Instance.ClControls.Remove(控件);
}
wait clEvent.Delete();
}