Pergunta

Eu construí um aplicativo WPF simples que navega pelas páginas em um quadro, mas um dos quadros é um visualizador de imagens e eu quero-o para que se alguém clicar duas vezes na imagem que vai tela cheia (ou seja, fora do frame).

Qual é a melhor maneira de fazer isso no WPF?

Foi útil?

Solução

Você deve ser capaz de criar-se um costume RoutedUICommand , talvez chamado de "enterFullScreen", que você levanta de dentro da sua página que representa o visualizador de imagens. Você simplesmente ligar um CommandBinding até este na janela principal para que sempre que esse comando é disparado, você reage. Obviamente você vai precisar o oposto também "exitFullScreen", de modo que cada página pode, talvez, oferecer a sua própria interface do usuário para sair do modo de tela cheia.

Aqui está o que o código pode parecer para definining e ligar os comandos:

public partial class MyWindow : Window
{
    public static readonly RoutedUICommand EnterFullScreenCommand = 
        new RoutedUICommand("Enter fullscreen mode", 
                            "EnterFullScreen", 
                            typeof(MyWindow));
    public static readonly RoutedUICommand ExitFullScreenCommand = 
        new RoutedUICommand("Exit fullscreen mode", 
                            "ExitFullScreen", 
                            typeof(MyWindow));

    public MyWindow()
    {
        this.InitializeComponent();

        this.CommandBindings.Add(
            new CommandBinding(MyWindow.EnterFullScreenCommand,
                               (sender, args) =>
                               {
                                   // logic to go fullscreen here
                               },
                               (sender, args) =>
                               {
                                   args.CanExecuted = 
                                       // am I already fullscreen?
                               }));

        this.CommandBindings.Add(
            new CommandBinding(MyWindow.ExitFullScreenCommand,
                               (sender, args) =>
                               {
                                   // logic to exit fullscreen here
                               },
                               (sender, args) =>
                               {
                                   args.CanExecuted = 
                                       // am I fullscreen right now?
                               }));

    }

E, em seguida, em sua página, você poderia simplesmente usar este comando assim:

<Button Command="{x:Static myNS:MyWindow.EnterFullScreenCommand}" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top