C# 每次我想更改wpf窗口的内容时,是否创建一个新的用户控件实例?

C# 每次我想更改wpf窗口的内容时,是否创建一个新的用户控件实例?,c#,wpf,C#,Wpf,我四处查看,发现设置WPF窗口内容的方法是将窗口内容设置为UserControl的新实例,例如:MyWindow.Content=new UserControl1() 如果我理解正确,它将创建UserControl的一个新实例。那么,当您想返回到前一个UserControl时,比如您在另一个UserControl上有一个back按钮,该怎么办?(希望这是有意义的)这不会占用内存中不必要的空间吗?做这件事的正确方法是什么?我认为您可以做的是将usercontrol保存到内存中,比如字典 publi

我四处查看,发现设置WPF窗口内容的方法是将窗口内容设置为UserControl的新实例,例如:
MyWindow.Content=new UserControl1()


如果我理解正确,它将创建UserControl的一个新实例。那么,当您想返回到前一个UserControl时,比如您在另一个UserControl上有一个back按钮,该怎么办?(希望这是有意义的)这不会占用内存中不必要的空间吗?做这件事的正确方法是什么?

我认为您可以做的是将usercontrol保存到内存中,比如字典

public Dictionary<string, UserControl> dicForUserControl = new Dictionary<string, UserControl>();
public Dictionary dicForUserControl=new Dictionary();
每当您想要返回到上一个usercontrol时,都可以再次重置MyWindow.Content


我以前也有类似的问题。我的方法是使用选项卡控件,每个选项卡项都是一个usercontrol,然后您可以通过单击选项卡返回其中任何一个。

使用
导航窗口
和导航
页面
s(每个示例中,还有许多其他选项)。另外,创建新的UserControls不应该占用更多的内存,当它被删除时,你应该
Dispose
任何实现它的东西,其余的将由GC来处理。@Gusman:WPF没有可丢弃的UI对象。“做这件事的正确方法是什么?”--你有很多选择,但我不知道“正确的方法”是什么就是使用MVVM,让WPF担心何时以及如何实例化UI对象。@PeterDuniho我没有说“UI控件”,而是说“任何”,如果用户正在创建usercontrols,他可以在存储的任何对象类型中拥有可能需要处理的控件。这与我的想法类似。只需存储它,然后在需要时调用它,但我想知道是否有WPF/.Net内置的方法来实现这一点。