小编Dim*_*maK的帖子

从Windows 10虚拟键盘进入WPF文本框的快乐表情符号未在文本框的PreviewTextInput事件中捕获

我想禁用在WPF应用程序的输入字段中输入所有Emojis(情感图标).我实现它的方式是:

txtUserName.PreviewTextInput += LoginPreviewTextInput;
Run Code Online (Sandbox Code Playgroud)

LoginPreviewTextInput看起来如下:

private void LoginPreviewTextInput(object sender, TextCompositionEventArgs e)
{
     if (!InputValidator.IsValidInput(e.Text))
          e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)

InputValidator的IsValidInput如下所示:

public class InputValidator
{
    //These characters are allowed in the textbox
    private static string pattern = @"^[\w\s,\.\(\)~!@\#\$%\^&\*-=\+\[\]\{\}:;'""<>\?\\|]*$";
    public static bool IsValidInput(string previewedInput)
    {
        var matches = Regex.Matches(previewedInput, pattern);
        if (matches.Count == 1)
        {
            return true;
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是它适用于虚拟键盘中的所有表情符号图标,除了快乐表情符号.它不起作用,因为一旦我在Windows虚拟键盘中输入此表情符号,它就不会调用LoginPreviewTextInput(它适用于所有其他Emojis).

快乐表情符号如下图所示:

在此输入图像描述

当快乐表情符号输入文本框时,文本框如下所示:

在此输入图像描述

快乐表情符号已输入文本框.您可以看到,当文本框的文本属性为空时,甚至会显示水印.当我在snoop中查看文本框的text属性时,它确实是空的,并且有界属性是viewmodel为空(从未调用setter).

同样,只发生在这个特定的表情符号(快乐的表情符号)上.所有其他表情符号都到达LoginPreviewTextInput方法,与正则表达式不匹配并被忽略.

c# wpf events virtual-keyboard

6
推荐指数
1
解决办法
282
查看次数

C#/ .Net Framework中的堆大小 - 它可以增长吗?

我在我的一本大学书中遇到了一个令人困惑的问题:在那里声明"堆不是静态的,可以根据需要通过从操作系统请求更多内存来增长".

所以我很困惑的是:假设我运行我的应用程序,并在堆上分配对象.在某些时候,应用程序内存不足:现在发生了什么?

根据我的理解,Gc(垃圾收集器)开始并开始它的标记和扫描操作.我想知道不管怎样,而不是通过CLR调用Gc,堆是否有可能从操作系统请求更多内存?

我读到在C++语言中,有一种方法可以实现这一点,但在C#.Net Framework 4.5中是否可行?

.net c# heap garbage-collection memory-management

3
推荐指数
1
解决办法
8996
查看次数

棱镜导航 - 上一个和下一个视图

我正在使用prism和MVVM开发一个wpf应用程序.

我有一个主shell,它有两个区域:菜单区域和主区域.

我正在尝试在菜单区域(包含MenuView)中实现一个BACK和FORWARD按钮,就像我们在任何浏览器中一样:假设我有5个视图:View1,View2,View3,View4,View5.
当我启动应用程序时,View1将显示在主区域中.目前,我希望禁用这些按钮.现在,我选择导航到View3:View3显示在主区域中,然后Back btn变为启用(前进btn保持禁用状态).然后,我导航到View2,它显示在主区域中.

现在,当我单击Back btn时,View 3将显示在Main Region中,并且Forward btn将变为启用状态.我单击Forward,显示Now View 2,并禁用Forward btn.

我尝试过使用导航日志,如以下链接所述:http: //msdn.microsoft.com/en-us/library/gg430861(v = pandp.40).aspx

但是没有成功,因为我做了他们在MenuViewModel中提到的内容,这是在整个应用程序生命周期中在菜单区域中显示的唯一视图(并且只有主区域切换视图).这就是为什么,OnNavigatedTo方法永远不会被调用,因为我从不直接使用MenuView,这导致navigationService始终为null.

重点是我想在MenuView中使用这些按钮 - 菜单区域中显示的唯一视图,用于所有应用程序生命周期.后退和前进按钮在主区域中的视图之间导航 - 来回.会建议您的建议.

c# wpf mvvm prism-4

3
推荐指数
1
解决办法
4927
查看次数

decimal.ToString的不同行为

我遇到了一个非常奇怪的行为decimal.ToString:第一种情况: 在此输入图像描述

你可以看到那个变量ValueFloat = 9ValueFloat.Value.ToString("G") = "9".

第二种情况:

在此输入图像描述

你可以看到那个变量ValueFloat = 9ValueFloat.Value.ToString("G") = "9.000000000000000".

现在,怎么可能呢?变量ValueFloat在两种情况下都具有相同的值.

我假设它可能与文化有关,但在这两种情况下代码都在我的本地机器上运行,这显然具有相同的文化.

c# decimal tostring

3
推荐指数
1
解决办法
138
查看次数

带有斯洛文尼亚文化的数据时代(sl-SI)有空格

我准备了一个小型的WPF应用程序:

视图:

在此输入图像描述

View-Model看起来如下:

在此输入图像描述

现在,由于某种原因,斯洛文尼亚文化的日,月和年之间有空格:

在此输入图像描述

我的意思是,在2014年1月14日,我得到的时间是2014年1月14日.

c# culture datetime

2
推荐指数
1
解决办法
164
查看次数