我知道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();
}
这就是问题所在。如果我使用正常的默认方式,那么一切正常。