目标:提高动态视图的性能。
控件:一个ListBox
作为菜单选择,一个ContentControl
作为视图占位符。
每个视图的Listbox.SelectedItem
拥有ViewModel
。每个视图由ViewModel
-DataTemplate
实例化。
这些视图是带有几个TextBox
和Grid
的用户输入形式。
以下ListBoxItem
具有Selected
事件的EventTrigger来触发MenuClickCommand
命令,为简洁起见,此处未显示。
<ListBox>
<ListBoxItem IsSelected="True" Content="Profile">
<ListBoxItem Content="Access">
<ListBoxItem Content="Address">
<ListBoxItem Content="Contact">
</ListBox>
<ContentControl Content="{Binding SelectedChild}"/>
class TransViewModel : BaseTransViewModel
{
public TransViewModel(TransModel model, IMainWindow mainWindowViewModel) :
base(model, mainWindowViewModel)
{
public BaseViewModel SelectedChild
{
get { return GetProperty(() => SelectedChild); }
set { SetProperty(() => SelectedChild, value); }
}
[Command]
public void MenuClick(UserDetail userDetail)
{
if (SelectedChild != null)
{
SelectedChild.Dispose();
SelectedChild = null;
}
if (DetailChildren.ContainsKey(userDetail))
SelectedChild = DetailChildren[userDetail];
}
}
}
更改SelectedChild
的当前方法存在滞后(大约1s),这很糟糕,因为每个视图都不拥挤也不富动画效果。如何改善动态视图切换性能?