Fazendo aplicações WPF olhar estilo Metro, mesmo no Windows 7? (Window Chrome / Theming / Tema)

Eu gosto do cromo da janela no novo Office Suite e no Visual Studio:

insira a descrição da imagem aqui

Eu ainda estou desenvolvendo aplicativos para o Windows 7, é claro, mas eu estou querendo saber se há uma maneira rápida e fácil (leia-se: estilo WPF ou Windows Library) para emular este estilo. Eu já fiz um estilo cromado de janela no passado, mas fazê-lo parecer e se comportar da maneira certa é realmente complicado.

Alguém sabe se existem modelos ou bibliotecas para adicionar uma aparência “Modern UI” aos meus aplicativos WPF?

O que eu fiz foi criar minha própria janela e estilo. Porque eu gosto de ter controle sobre tudo e eu não queria algumas bibliotecas externas apenas para usar uma janela dele. Eu olhei para o já mencionado MahApps.Metro no GitHub

MahApps

e também muito bom Modern UI on CodePlex . (Somente .NET4.5)

IU moderna )

Há mais um Elysium, mas eu realmente não tentei este.

Elysium

O estilo que fiz foi muito fácil quando eu olhei como isso é feito. Agora eu tenho minha própria janela e posso fazer o que quiser com xaml … para mim é a principal razão pela qual eu fiz o meu próprio. E eu fiz mais uma para você também 🙂 Eu provavelmente diria que eu não seria capaz de fazer isso sem explorar a Modern UI , foi uma grande ajuda. Eu tentei fazer com que parecesse com a janela VS2012. Se parece com isso.

Minha janela

Aqui está o código (observe que ele está direcionado para o .NET4.5)

public class MyWindow : Window { public MyWindow() { this.CommandBindings.Add(new CommandBinding(SystemCommands.CloseWindowCommand, this.OnCloseWindow)); this.CommandBindings.Add(new CommandBinding(SystemCommands.MaximizeWindowCommand, this.OnMaximizeWindow, this.OnCanResizeWindow)); this.CommandBindings.Add(new CommandBinding(SystemCommands.MinimizeWindowCommand, this.OnMinimizeWindow, this.OnCanMinimizeWindow)); this.CommandBindings.Add(new CommandBinding(SystemCommands.RestoreWindowCommand, this.OnRestoreWindow, this.OnCanResizeWindow)); } private void OnCanResizeWindow(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = this.ResizeMode == ResizeMode.CanResize || this.ResizeMode == ResizeMode.CanResizeWithGrip; } private void OnCanMinimizeWindow(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = this.ResizeMode != ResizeMode.NoResize; } private void OnCloseWindow(object target, ExecutedRoutedEventArgs e) { SystemCommands.CloseWindow(this); } private void OnMaximizeWindow(object target, ExecutedRoutedEventArgs e) { SystemCommands.MaximizeWindow(this); } private void OnMinimizeWindow(object target, ExecutedRoutedEventArgs e) { SystemCommands.MinimizeWindow(this); } private void OnRestoreWindow(object target, ExecutedRoutedEventArgs e) { SystemCommands.RestoreWindow(this); } } 

E aqui resources:

  #FF2D2D30 #FF3F3F41 #FF007ACC #FFF4F4F5       

A solução que acabei escolhendo foi o MahApps.Metro ( github ), que (depois de usá-lo em dois softwares agora) eu considero um excelente kit de interface do usuário (crédito para Oliver Vogel pela sugestão) .

Estilo da janela

Ele capta o aplicativo com muito pouco esforço necessário e possui adaptações dos controles padrão do Windows 8. É muito robusto.

Marca d'água da caixa de texto

Uma versão está disponível no Nuget:

Você pode instalar o MahApps.Metro via Nuget usando a GUI (clique com o botão direito em seu projeto, Manage Nuget References, procure por ‘MahApps.Metro’) ou através do console:

PM> Instalar o pacote MahApps.Metro

Também é gratuito – mesmo para uso comercial.

Atualização de 29/10/2013:

Descobri que a versão do Github do MahApps.Metro está repleta de controles e estilos que não estão disponíveis na versão atual do nuget, incluindo:

Datagrids:

insira a descrição da imagem aqui

Janela limpa:

insira a descrição da imagem aqui

Flyouts:

insira a descrição da imagem aqui

Azulejos:

insira a descrição da imagem aqui

O repository do github é muito ativo com um pouco de contribuições do usuário. Eu recomendo verificar isso.

Eu recomendaria a interface do usuário moderna para o WPF .

Tem um mantenedor muito ativo, é incrível e grátis!

UI moderna para WPF (Captura de tela do aplicativo de amostra

Atualmente estou portando alguns projetos para o MUI, primeiro (e enquanto isso segundo) a impressão é apenas wow!

Para ver o MUI em ação, você pode baixar o XAML Spy, que é baseado no MUI.

EDIT: Usando UI moderna para WPF alguns meses e eu estou amando isso!

Com base na resposta de Viktor La Croix com a fonte acima, eu mudaria para usar o seguinte:

Exemplo de Fonte Marlett

É uma prática melhor usar a fonte Marlett em vez de pontos de dados de caminho para os botões Minimizar, Restaurar / Maximizar e Fechar.

        

Se você estiver disposto a pagar eu recomendo fortemente que você Telerik Components for WPF . Eles oferecem ótimos estilos / temas e há temas específicos para o Office 2013 e o Windows 8 (EDIT: e também um estilo temático do Visual Studio 2013). No entanto, há muito mais do que apenas estilos na verdade, você terá um monte de controles que são realmente úteis.

Aqui está como parece em ação (Capturas de canvas tiradas de amostras de telerik):

Exemplo de painel do Telerik

Exemplo de painel do Telerik CRM

Aqui estão os links para o exemplo do telerik executive dashboard (primeira canvas) e aqui para o CRM Dashboard (segunda canvas).

Eles oferecem um teste de 30 dias, basta dar-lhe um tiro!