Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

apollyon

C# WPF Frame, Remover conteudo.

Recommended Posts

Estou aprendendo C# e estou tentando fazer um sistema de gerenciamento de despesa pessoal, contas a pagar e histórico e com controle de usuário, bem simples até mesmo porque não tenho tanto conhecimento para avançar muito no momento.

Minha solução possui dentro dela 3 projetos, o principal, o modulo de cadastro (dll), modulo financeiro (dll). Na janela principal utilizo o RibbonWindow WPF e um frame, quando clico no botão ele carrega o UserControl das dlls e coloca dentro do frame, verifiquei e a inclusão do controle pode ser feita dessas duas formas

UsuarioUserControl uuc = new UsuarioUserControl();
frame1.Content = uuc;

e essa forma

Uri uuc = new Uri("namespace;component/UsuarioUserControl.xaml",UriKind.Relative)
frame1.Source = uuc;

Coloco qualquer um dos código da chamada de evento click do botão e ele insere o conteúdo dentro do frame.

Eu pensei utilizar desse jeito para não ficar enchendo de aba a janela... Agora eu queria remover o conteúdo, até mesmo não sei se ele fica sempre aberto conforme abre outro e fica ocupando memória... Criei um botão com os seguintes comando para tentar apagar os dados do frame, só que não deram certo.

frame1.Content = null;
frame1.Source = null;
frame1.NavigationService.RemoveBackEntry();
frame1.RemoveBackEntry();
frame1.Refresh();

 

Seu eu abrir 2 ou mais UserControl, no frame, eles sempre ficaram abertos ou se eu abrir outro ele fecha os outros dois. Esse tipo de recurso poderia ser utilizado para substituir o MDI ou tem outra forma para fazer isso, usando outro tipo de container?

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conheço WPF o bastante, mas eu acredito que se abrir mais de um controle ambos ficarão abertos.

Tem que ver qual a forma correta para dar um Close ou Dispose neste componente.

 

Abraços...

Até o momento não encontrei muita coisa, tudo que encontrei foi aqueles comandos que tentei e sem sucesso...

Tem algum outro tipo de container que consiga fazer isso, incluir o UserControl, que tenha algum comando

para limpar o conteudo...

 

Frame is designed to provide the ability for navigating content; the preferred way to package content for navigation is a Page as you are doing. Specifically, the Frame can be navigated with the Navigate methods and will maintain the lifetime of navigation history, where "history" is the keyword here.

 

Within the history of the navigation, the Frame will not maintain an instance of each Page navigated to avoid excessive memory consumption. Consequently, the state is not remembered when using the Navigation controls and a new instance is created each time the page is navigated to.

 

In other words, when you navigate away from a page in a frame, the object is disposed.

 

MSDN has a good read on using Frames.

http://stackoverflow.com/questions/2560286/wpf-frame-source-questions

http://msdn.microsoft.com/en-us/library/system.windows.controls.frame.aspx

 

Pelo o que eu entendi, assim que você manda abrir outro user control o anterior é apagado para não ficar consumindo memória...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.