MENU
Hey galera, estou com um problemão...
já um tempo estou estudando wpf(para ser mais claro Ribbon)
depois de quebrar muito a cabeça dei um passo...
o negócio é tenho meu menu pronto mas não consigo chamar ele no meu
form, o código fico assim:
<!--Form-->
Imports System.Windows.Forms
Imports Microsoft.Windows.Controls.Ribbon
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim host As System.Windows.Forms.Integration.ElementHost = New System.Windows.Forms.Integration.ElementHost
Dim uc1 As Teste.MainWindow = New Teste.MainWindow
host.Dock = DockStyle.Fill
host.Child = uc1
Me.Controls.Add(host)
End Sub
End Class
eo código do menu:
<ribbon:RibbonWindow x:Class=[Ô]Teste.MainWindow[Ô]
xmlns=[Ô]http://schemas.microsoft.com/winfx/2006/xaml/presentation[Ô]
xmlns:x=[Ô]http://schemas.microsoft.com/winfx/2006/xaml[Ô]
xmlns:ribbon=[Ô]clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary[Ô]
Title=[Ô]MainWindow[Ô]
x:Name=[Ô]RibbonWindow[Ô]
Width=[Ô]640[Ô] Height=[Ô]480[Ô]>
<Grid x:Name=[Ô]LayoutRoot[Ô]>
<Grid.RowDefinitions>
<RowDefinition Height=[Ô]Auto[Ô]/>
<RowDefinition Height=[Ô]*[Ô]/>
</Grid.RowDefinitions>
<ribbon:Ribbon x:Name=[Ô]Ribbon[Ô]>
<ribbon:Ribbon.ApplicationMenu>
<ribbon:RibbonApplicationMenu SmallImageSource=[Ô]T:\Felipe\Fontes\Am.ico[Ô]>
<ribbon:RibbonApplicationMenuItem Header=[Ô]Sair do SAM[Ô]
x:Name=[Ô]MenuItem1[Ô]
ImageSource=[Ô]P:\Icones\Icons_w7\167.ico[Ô]/>
</ribbon:RibbonApplicationMenu>
</ribbon:Ribbon.ApplicationMenu>
<ribbon:RibbonTab x:Name=[Ô]TabCliente[Ô]
Header=[Ô]Cliente[Ô]>
<ribbon:RibbonGroup x:Name=[Ô]Group1[Ô]>
<ribbon:RibbonButton x:Name=[Ô]btnConsulta[Ô]
LargeImageSource=[Ô]P:\Icones\Icons_w7\245.ico[Ô]
Label=[Ô]Consulta[Ô] />
<ribbon:RibbonButton x:Name=[Ô]btnCadastro[Ô]
LargeImageSource=[Ô]P:\Icones\Icons_w7\032.ico[Ô]
Label=[Ô]Cadastro[Ô]/>
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
<ribbon:RibbonTab x:Name=[Ô]TabProdutos[Ô]
Header=[Ô]Produtos[Ô]>
<ribbon:RibbonGroup x:Name=[Ô]Grupo2[Ô]>
<ribbon:RibbonButton x:Name=[Ô]btnConsultaProdutos[Ô]
LargeImageSource=[Ô]P:\Icones\Icons_w7\245.ico[Ô]
Label=[Ô]Consulta[Ô]/>
<ribbon:RibbonButton x:Name=[Ô]btnCadProd[Ô]
LargeImageSource=[Ô]P:\Icones\Icons_w7\395.ico[Ô]
Label=[Ô]Cadastrar Produto[Ô]/>
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
</ribbon:Ribbon>
</Grid>
</ribbon:RibbonWindow>
---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/
estou me baseando neste artigo www.linhadecodigo.com.br/artigo/1263/utilizando-controles-wpf-em-aplicacoes-windows-forms.aspx
Para quem quiser dar uma olhada no projeto esta ai...em vs 2010
já um tempo estou estudando wpf(para ser mais claro Ribbon)
depois de quebrar muito a cabeça dei um passo...
o negócio é tenho meu menu pronto mas não consigo chamar ele no meu
form, o código fico assim:
<!--Form-->
Imports System.Windows.Forms
Imports Microsoft.Windows.Controls.Ribbon
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim host As System.Windows.Forms.Integration.ElementHost = New System.Windows.Forms.Integration.ElementHost
Dim uc1 As Teste.MainWindow = New Teste.MainWindow
host.Dock = DockStyle.Fill
host.Child = uc1
Me.Controls.Add(host)
End Sub
End Class
eo código do menu:
<ribbon:RibbonWindow x:Class=[Ô]Teste.MainWindow[Ô]
xmlns=[Ô]http://schemas.microsoft.com/winfx/2006/xaml/presentation[Ô]
xmlns:x=[Ô]http://schemas.microsoft.com/winfx/2006/xaml[Ô]
xmlns:ribbon=[Ô]clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary[Ô]
Title=[Ô]MainWindow[Ô]
x:Name=[Ô]RibbonWindow[Ô]
Width=[Ô]640[Ô] Height=[Ô]480[Ô]>
<Grid x:Name=[Ô]LayoutRoot[Ô]>
<Grid.RowDefinitions>
<RowDefinition Height=[Ô]Auto[Ô]/>
<RowDefinition Height=[Ô]*[Ô]/>
</Grid.RowDefinitions>
<ribbon:Ribbon x:Name=[Ô]Ribbon[Ô]>
<ribbon:Ribbon.ApplicationMenu>
<ribbon:RibbonApplicationMenu SmallImageSource=[Ô]T:\Felipe\Fontes\Am.ico[Ô]>
<ribbon:RibbonApplicationMenuItem Header=[Ô]Sair do SAM[Ô]
x:Name=[Ô]MenuItem1[Ô]
ImageSource=[Ô]P:\Icones\Icons_w7\167.ico[Ô]/>
</ribbon:RibbonApplicationMenu>
</ribbon:Ribbon.ApplicationMenu>
<ribbon:RibbonTab x:Name=[Ô]TabCliente[Ô]
Header=[Ô]Cliente[Ô]>
<ribbon:RibbonGroup x:Name=[Ô]Group1[Ô]>
<ribbon:RibbonButton x:Name=[Ô]btnConsulta[Ô]
LargeImageSource=[Ô]P:\Icones\Icons_w7\245.ico[Ô]
Label=[Ô]Consulta[Ô] />
<ribbon:RibbonButton x:Name=[Ô]btnCadastro[Ô]
LargeImageSource=[Ô]P:\Icones\Icons_w7\032.ico[Ô]
Label=[Ô]Cadastro[Ô]/>
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
<ribbon:RibbonTab x:Name=[Ô]TabProdutos[Ô]
Header=[Ô]Produtos[Ô]>
<ribbon:RibbonGroup x:Name=[Ô]Grupo2[Ô]>
<ribbon:RibbonButton x:Name=[Ô]btnConsultaProdutos[Ô]
LargeImageSource=[Ô]P:\Icones\Icons_w7\245.ico[Ô]
Label=[Ô]Consulta[Ô]/>
<ribbon:RibbonButton x:Name=[Ô]btnCadProd[Ô]
LargeImageSource=[Ô]P:\Icones\Icons_w7\395.ico[Ô]
Label=[Ô]Cadastrar Produto[Ô]/>
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
</ribbon:Ribbon>
</Grid>
</ribbon:RibbonWindow>
---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/--/---/--/---/---/--/
estou me baseando neste artigo www.linhadecodigo.com.br/artigo/1263/utilizando-controles-wpf-em-aplicacoes-windows-forms.aspx
Para quem quiser dar uma olhada no projeto esta ai...em vs 2010
Na verdade, você deve [Ô]chamar[Ô] sua ribbon no código VB do XAML, e não no código VB do Windows Forms.
Ainda que haja a interoperabilidade, o ElementHost transmite eventos e propriedades públicas entre os dois formulários (hospedeiro e hospedado), mas não transmite componentes internos ou seus eventos, que são private ou protected.
Assim, por exemplo, no clique de cada botão de menu da Ribbon, no código VB do arquivo XAML, você deve disparar um evento para seu usercontrol, de forma que o Windows forms possa receber e processar esse evento..
Ainda que haja a interoperabilidade, o ElementHost transmite eventos e propriedades públicas entre os dois formulários (hospedeiro e hospedado), mas não transmite componentes internos ou seus eventos, que são private ou protected.
Assim, por exemplo, no clique de cada botão de menu da Ribbon, no código VB do arquivo XAML, você deve disparar um evento para seu usercontrol, de forma que o Windows forms possa receber e processar esse evento..
Tópico encerrado , respostas não são mais permitidas