none
Window está abrindo em nova Janela RRS feed

  • 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!!

    segunda-feira, 25 de abril de 2011 17:31

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
    segunda-feira, 25 de abril de 2011 19:09

Todas as Respostas

  • Nesse link tem a solução

     

    http://wpfmdi.codeplex.com/

    segunda-feira, 25 de abril de 2011 18:05
  • 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
    segunda-feira, 25 de abril de 2011 19:09
  •  

    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."

     

     

     


    segunda-feira, 25 de abril de 2011 20:18
  • Valeuuu consegui resolver !!!!
    segunda-feira, 25 de abril de 2011 21:44