WPF窗口强制重绘窗口大小

时间:2014-10-02 15:45:15

标签: c# wpf xaml size

我知道Google上有很多与此相关的文章,相信我,我几乎尝试了所有内容。 所以问题是,我有一个wpf应用程序,当用户专注于任何输入控件,如文本框时,我正在使用TabTip.exe显示外部触摸键盘。 以下代码:

 public class KeyboardHelper
{
    private const string PROCESS_NAME = "TabTip";
    private const string PROCESS_PATH = "Common Files/Microsoft Shared/ink/TabTip.exe";

    public static void ShowKeyboard()
    {
        Process keyboard = null;
        Process[] pname = Process.GetProcessesByName(PROCESS_NAME);
        if (pname.Length == 0)
        {
            keyboard = new Process();
        }
        else
        {
            keyboard = pname[0];
        }

        string processPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), PROCESS_PATH);
        keyboard.StartInfo.FileName = processPath;
        keyboard.Start();
    }

    public static void Closekeyboard()
    {
        Process[] pname = Process.GetProcessesByName(PROCESS_NAME);
        if (pname.Length > 0)
        {
            pname[0].Kill();
        }
    }
}

现在问题从这里开始键盘打开,但如果它处于停靠模式,它会导致我的应用程序调整几乎一半的屏幕。当我关闭键盘应用程序的大小相同时,我想再次恢复到全屏状态。 从cs控制我的大小,因为它来自数据库

WindowState = maximized;
ResizeMode= NoResize;
WindowsStyle = None;

任何解决问题的方法。 我尝试过UpdateLayout,Dispatcher.BeginInvoke,Invalidate methods。

谢谢Jason,现在我知道原因或者可以说问题的情况。在我的应用程序中,我必须在运行时决定启动页面,所以我使用这样的代码

 private void Application_Startup(object sender, StartupEventArgs e)
    {
        //Set startup page for the application.
        MainWindow window = new MainWindow();
        window.ShowDialog();
    }

这就是问题所在。如果我使用正常的默认方式,那么一切正常。

0 个答案:

没有答案