在这个例子中,我有一个MainPage和两个UserControls
MainPage - Page
Content - UC
ButtonPanel - UC
在我的ButtonPanel中,我有一个从数据库中删除项目的按钮,之后我希望更新Content
以显示更新的内容。
为此,我使用以下代码:
MainPage Xaml:
<UC:Content x:Name="Content" />
<Panels:ButtonPanel x:Name="ButtonPanel" />
MainPage Codebehind:
ButtonPanel.DeleteItem += new EventHandler(UpdateContent);
private void UpdateContent(object sender, EventArgs e)
{
// If i start a stopwatch here and stop it in Content.Refresh()
// It shows that it took 3000 miliseconds to go from this method
// Into the Content.Refresh method, without executing any code.
Content.Refresh();
OnPropertyChanged("Content");
}
内容UC Codebehind:
public void Refresh()
{
// Update content
// StopWatch shows that running all of this code takes 20 miliseconds.
}
ButtonPanel UC Codebehind:
private static EventHandler _deleteItem;
public static event EventHandler DeleteItem
{
add
{
if (_deleteItem == null)
{
_deleteItem += value;
}
}
remove
{
_deleteItem -= value;
}
}
private void ButtonDelete_Tapped(object sender, TappedRoutedEventArgs e)
{
// This takes no time at all either.
// Delete items from database
if (_buttonRefreshEvent != null)
_buttonRefreshEvent(this, EventArgs.Empty);
}
基本上,秒表告诉我的是从MainPage
进入Content.Refresh()
需要3000毫秒。为什么这样,我能做些什么来减少这种负载速度,因为它非常令人沮丧。