WPF Comunicação da Página / Frame à janela
-
05-07-2019 - |
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?
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}" />