Domanda

Ho creato una semplice app WPF che naviga attraverso le pagine in un frame, ma uno dei frame è un visualizzatore di immagini e lo voglio in modo che se qualcuno fa doppio clic sull'immagine che vada a schermo intero (cioè all'esterno del frame).

Qual è il modo migliore per farlo in WPF?

È stato utile?

Soluzione

Dovresti essere in grado di crearti un RoutedUICommand , forse chiamato " EnterFullScreen " ;, che sollevi dalla tua Pagina che rappresenta il visualizzatore di immagini. È sufficiente collegare un CommandBinding a questo nella finestra principale in modo che ogni volta che quel comando viene attivato, si reagisce. Ovviamente avrai bisogno anche del contrario, "ExitFullScreen", in modo che ogni pagina possa forse offrire la sua interfaccia utente per uscire dalla modalità a schermo intero.

Ecco come potrebbe apparire il codice per definire e collegare i comandi:

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 poi nella tua Pagina useresti semplicemente questo comando in questo modo:

<Button Command="{x:Static myNS:MyWindow.EnterFullScreenCommand}" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top