другое поведение моего приложения wpf на сервере Windows - PullRequest
0 голосов
/ 22 мая 2018

Что-то странное случается со мной в моем приложении wpf, у меня есть главное окно с несколькими страницами, по которым пользователь может перемещаться между ними.Приложение отлично работает на моей ОС Windows 10, но когда я запускаю его на Windows Server 2012, если я немного играю с размером окна, приложение вылетает.

Вот главное окно xaml:

<Window
        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:fa="http://schemas.fontawesome.io/icons/"
        xmlns:local="clr-namespace:myApp"
         xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
         xmlns:UserControls="clr-namespace:myApp.View.UserControls"
        xmlns:Helpers="clr-namespace:myApp.Helpers" 
    x:Class="myApp.MainWindow"
        mc:Ignorable="d"       
        ResizeMode="CanResizeWithGrip"
        MinWidth="900"
        MinHeight="600"
    Background="#FFDEDEDE"
        Title="Preparation Tool" Height="600" Width="900" Icon="..\Resources\S_icon.ico" Foreground="White" WindowStyle="None">

1 Ответ

0 голосов
/ 22 мая 2018

Похоже, вам нужно обработать изменение размера окна в вашем коде окна.Этот код работал для меня, когда я делаю что-либо (изменение размера, перемещение) с моим окном

    public Window1()
{
     InitializeComponent();

      this.SourceInitialized += Window1_SourceInitialized;
}

private void Window1_SourceInitialized(object sender, EventArgs e)
{
    WindowInteropHelper helper = new WindowInteropHelper(this);
    HwndSource source = HwndSource.FromHwnd(helper.Handle);
    source.AddHook(WndProc);
}

const int WM_SYSCOMMAND = 0x0112;
const int SC_MOVE = 0xF010;
const int WM_WINDOWPOSCHANGED = 0x0047;
const int WM_WINDOWPOSCHANGING = 0x0046;
const int WM_EXITSIZEMOVE = 0x0232;

private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{

    switch (msg)
    {
        case WM_SYSCOMMAND:
                int command = wParam.ToInt32() & 0xfff0;
                if (command == SC_MOVE && command == WM_WINDOWPOSCHANGED &&
                    command == WM_WINDOWPOSCHANGING && command == WM_EXITSIZEMOVE)
                    {
                        handled = true;
                    }
                break;
            default:
                break;
        }
        return IntPtr.Zero;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...