WPF: открыть приложение поверх другого в режиме планшета Win10 - PullRequest
0 голосов
/ 29 октября 2018

В настоящее время я работаю над личным проектом win10 wpf, простым инструментом, который может помочь мне использовать другие программы на моем планшете win10.

Таким образом, одно из требований заключается в том, что эта программа должна работать в режиме без максимизации, а другие приложения физически находятся под ним. Вы можете найти несколько примеров такого поведения в программах виртуальной клавиатуры, пипетках, программах снятия скриншотов. Они запускаются поверх других приложений, и вы все еще можете видеть, что другое приложение все еще работает.

Мое приложение отлично работает в режиме рабочего стола, потому что вы можете запускать несколько окон одновременно, перекрывая друг друга. Но в режиме планшета кажется, что вы не можете запустить более 1 приложения одновременно. Прямо сейчас, когда я открываю свое приложение, приложение, которое было вверху, закрывается, и все, что я вижу за своим приложением, это обои. Я не могу использовать режим разделенного просмотра, потому что мое приложение должно быть физически поверх других приложений, и я должен иметь возможность видеть другие приложения через мое частично прозрачное приложение.

Я уже проверил эту ссылку: Запустите другое приложение сверху в режиме планшета Но в моем случае это было не очень полезно, потому что мне нужно, чтобы мое приложение запускалось нормально, а не через другое приложение.

Я уже лично видел хотя бы одну стороннюю программу, которая уже делает это в режиме рабочего стола. Пожалуйста, помогите!

Ниже мой код MainWindow.xaml:

<Window x:Class="DictBook.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:DictBook"
    xmlns:controls="clr-namespace:DictBook.Controls"
    mc:Ignorable="d"
    Closing="Window_Closing"
    AllowsTransparency="True" WindowStyle="None"
    Title="MainWindow" Height="200" SizeToContent="WidthAndHeight">

<Window.Resources>
    <!--Some resources here-->
</Window.Resources>

<Window.Background>
    <SolidColorBrush Opacity="0.0" Color="Black"/>
</Window.Background>


<StackPanel>
    <!--Some controls here-->
</StackPanel>

Ниже находится MainWindow.xaml.cs

public MainWindow()
    {
        Debug.WriteLine("MainWindow");

        Topmost = true;
        InitializeComponent();

        ShowInTaskbar = false;

        if (Properties.Settings.Default.Top > 0 && Properties.Settings.Default.Left > 0)
        {
            this.Top = Properties.Settings.Default.Top;
            this.Left = Properties.Settings.Default.Left;
        }

        PopulateMainWindow();
        Properties.Settings.Default.PropertyChanged += OnPropertyChanged;

    }

1 Ответ

0 голосов
/ 29 октября 2018

Я предлагаю вам установить Window.TopMost = true.

<Window x:Class="DictBook.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DictBook"
xmlns:controls="clr-namespace:DictBook.Controls"
mc:Ignorable="d"
Closing="Window_Closing"
AllowsTransparency="True" WindowStyle="None"
Title="MainWindow" Height="200" SizeToContent="WidthAndHeight" Topmost="True">
...