Цель: повышение производительности динамического просмотра.
Элементы управления: a ListBox
в качестве выбора меню и ContentControl
в качестве заполнителя представления.
Listbox.SelectedItem
содержит ViewModel
длякаждый вид.Каждое представление создается ViewModel
- DataTemplate
.Представления представляют собой пользовательскую форму ввода с несколькими TextBox
и Grid
.
В следующем ListBoxItem
имеется EventTrigger для Selected
события для запуска 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
имеет лаги (около 1 с), что плохо, потому что каждый вид не переполнен или не богат анимацией.Как улучшить производительность переключения динамического просмотра?