Usuário com melhor resposta
Window está abrindo em nova Janela

Pergunta
-
Fala Pessoal,
antes de fazer a pergunta eu dei uma googlada e pesquisei aqui no forum tb. Testei alguma coisa mas não resolveu o seguinte problema:
Tenho um MainWindow.xaml que é a janela principal que contém um grid e neste grid tem um menu com submenus. Criei um segundo xaml chamado TelaTeste.xaml e coloquei um label e um textbox neste.
No no menu eu utilizei o evento onclick para carregar o TelaTeste.xaml, esta tela está sendo carregada em uma nova janela, como se fosse um popup. Tentei usar o UserControl e o ContentControl, mas acho que estou usando-os de forma errada. Como posso fazer para que este segundo window abra dentro do Main sem que o menu desapareça e que a window não abra em forma de popup, valew!!
Respostas
-
e aí Jcts,
Não tem nenhum segredo, no MainWindow crie duas rowdefinitions no seu grid.
Na primeira row coloque o seu menu com submenus e na segunda coloque um contentcontrol, ocupando o resto da tela.
Ao clicar no item de menu desejado vc faz:
UserControl1 uc = new UserControl1; contentcontrol1.Content = uc;
Assim ele vai carregar o user control dentro do seu contentcontrol.
Lembrando que para fazer isso você só conseguirá utilizando UserControl, para conseguir abrir uma Window dentro de outra, no formato MDI você deve utilizar a sugestão do Thiago.
Espero ter ajudado.
Victor Camargos- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 25 de abril de 2011 19:32
- Marcado como Resposta jcts segunda-feira, 25 de abril de 2011 21:44
Todas as Respostas
-
Nesse link tem a solução
http://wpfmdi.codeplex.com/
- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 25 de abril de 2011 19:32
-
e aí Jcts,
Não tem nenhum segredo, no MainWindow crie duas rowdefinitions no seu grid.
Na primeira row coloque o seu menu com submenus e na segunda coloque um contentcontrol, ocupando o resto da tela.
Ao clicar no item de menu desejado vc faz:
UserControl1 uc = new UserControl1; contentcontrol1.Content = uc;
Assim ele vai carregar o user control dentro do seu contentcontrol.
Lembrando que para fazer isso você só conseguirá utilizando UserControl, para conseguir abrir uma Window dentro de outra, no formato MDI você deve utilizar a sugestão do Thiago.
Espero ter ajudado.
Victor Camargos- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 25 de abril de 2011 19:32
- Marcado como Resposta jcts segunda-feira, 25 de abril de 2011 21:44
-
fala Victor,
seria mais ou menos assim:
<Grid> <Grid.RowDefinitions> <RowDefinition Height="27*" /> <RowDefinition Height="284*" /> </Grid.RowDefinitions> <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="40,2,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /> <ContentControl Grid.Row="1" Height="283" HorizontalAlignment="Left" Margin="12,1,0,0" Name="contentControl1" VerticalAlignment="Top" Width="479"> <UserControl Name="userControl1" /> </ContentControl> </Grid>
Só que ao tentar instanciar o objeto em userControl1 uc = new userControl1; dá erro!!
Com este código no .cs:
TelaTeste tela = new TelaTeste(); UC = new UserControl(); UC.Content = tela; CC.Content = UC;
da o seguinte erro :
"Window deve ser a raiz da árvore. Não é possível adicionar Window como filho de Visual."
-