C# 初始化两次Usercontrol会导致开销
我正在开发一个WPF/C#应用程序,它通过将所有用户控件添加到网格的子控件,然后通过具有图标并充当菜单的listView来控制用户控件的可见性,从而在不同的用户控件之间导航 (如果您感到困惑,请查看下面的代码) 我一直关注的是,当我将用户控件添加到网格中时,以及当我单击与特定用户控件关联的ListViewitem来观察它时,用户控件被初始化,但如果我更改了选择并返回到原始用户控件,则不再初始化,现在只更改了可见性,因此,它们初始化了大约2次,bcz导致我的应用程序运行缓慢 代码如下所示 将用户控件添加到网格(网格名称为RenderPages,添加的用户控件为Dashboard,CheckBoxSelection)C# 初始化两次Usercontrol会导致开销,c#,wpf,winforms,xaml,mvvm,C#,Wpf,Winforms,Xaml,Mvvm,我正在开发一个WPF/C#应用程序,它通过将所有用户控件添加到网格的子控件,然后通过具有图标并充当菜单的listView来控制用户控件的可见性,从而在不同的用户控件之间导航 (如果您感到困惑,请查看下面的代码) 我一直关注的是,当我将用户控件添加到网格中时,以及当我单击与特定用户控件关联的ListViewitem来观察它时,用户控件被初始化,但如果我更改了选择并返回到原始用户控件,则不再初始化,现在只更改了可见性,因此,它们初始化了大约2次,bcz导致我的应用程序运行缓慢 代码如下所示 将用户控
private void Window_Loaded(object sender, RoutedEventArgs e)
{
UserControl usc;
usc = new Dashboard();
usc.Tag = "Memeber";
RenderPages.Children.Add(usc);
CheckBoxSelection usc3 = new CheckBoxSelection();
usc3.Tag = "CheckBoxList";
RenderPages.Children.Add(usc3);
ShowUserContro("Memeber");
}
当从ListView中选择一个项目时,它会将名称发送到下面的方法
private void Window_Loaded(object sender, RoutedEventArgs e)
{
UserControl usc;
usc = new Dashboard();
usc.Tag = "Memeber";
RenderPages.Children.Add(usc);
CheckBoxSelection usc3 = new CheckBoxSelection();
usc3.Tag = "CheckBoxList";
RenderPages.Children.Add(usc3);
ShowUserContro("Memeber");
}
private void ListViewMenu_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ShowUserContro((((ListViewItem)((ListView)sender).SelectedItem).Name));
}
控制添加的用户控件的可见性
private void Window_Loaded(object sender, RoutedEventArgs e)
{
UserControl usc;
usc = new Dashboard();
usc.Tag = "Memeber";
RenderPages.Children.Add(usc);
CheckBoxSelection usc3 = new CheckBoxSelection();
usc3.Tag = "CheckBoxList";
RenderPages.Children.Add(usc3);
ShowUserContro("Memeber");
}
private void ShowUserContro(string nm)
{
foreach (UIElement item in RenderPages.Children)
{
if (item is UserControl)
{
UserControl x = (UserControl)item;
if (x.Tag != null)
{
if (x.Tag.ToString().ToUpper() == nm.ToUpper())
{
x.Visibility = Visibility.Visible;
}
else
{
x.Visibility = Visibility.Collapsed;
}
}
}
}
}