如何提高WPF动态视图切换性能?

时间:2019-03-29 02:31:46

标签: c# wpf

目标:提高动态视图的性能。

控件:一个ListBox作为菜单选择,一个ContentControl作为视图占位符。

每个视图的Listbox.SelectedItem拥有ViewModel。每个视图由ViewModel-DataTemplate实例化。 这些视图是带有几个TextBoxGrid的用户输入形式。

以下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),这很糟糕,因为每个视图都不拥挤也不富动画效果。如何改善动态视图切换性能?

0 个答案:

没有答案