Связь WPF от страницы / кадра к окну
-
05-07-2019 - |
Вопрос
Я создал простое приложение WPF, которое перемещается по страницам в фрейме, но один из фреймов является средством просмотра изображений, и я хочу, чтобы, если кто-то дважды щелкнет на изображении, он вышел на полный экран (т.е. за пределами кадр). р>
Какой лучший способ сделать это в WPF?
Решение
Вы должны иметь возможность создать собственный RoutedUICommand , возможно, называется " EnterFullScreen " ;, который вы поднимаете изнутри своей страницы, представляющей средство просмотра изображений. Вы просто подключаете CommandBinding к этому в главном окне, чтобы всякий раз, когда эта команда запускалась, вы реагировали. Очевидно, вам понадобится и обратное, " ExitFullScreen " ;, чтобы каждая страница могла предложить свой собственный интерфейс для выхода из полноэкранного режима.
Вот как может выглядеть код для определения и подключения команд:
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?
}));
}
И тогда на вашей странице вы просто используете эту команду следующим образом:
<Button Command="{x:Static myNS:MyWindow.EnterFullScreenCommand}" />