我想禁用在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方法,与正则表达式不匹配并被忽略.
我在我的一本大学书中遇到了一个令人困惑的问题:在那里声明"堆不是静态的,可以根据需要通过从操作系统请求更多内存来增长".
所以我很困惑的是:假设我运行我的应用程序,并在堆上分配对象.在某些时候,应用程序内存不足:现在发生了什么?
根据我的理解,Gc(垃圾收集器)开始并开始它的标记和扫描操作.我想知道不管怎样,而不是通过CLR调用Gc,堆是否有可能从操作系统请求更多内存?
我读到在C++语言中,有一种方法可以实现这一点,但在C#.Net Framework 4.5中是否可行?
我正在使用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中使用这些按钮 - 菜单区域中显示的唯一视图,用于所有应用程序生命周期.后退和前进按钮在主区域中的视图之间导航 - 来回.会建议您的建议.
我准备了一个小型的WPF应用程序:
视图:
View-Model看起来如下:
现在,由于某种原因,斯洛文尼亚文化的日,月和年之间有空格:
我的意思是,在2014年1月14日,我得到的时间是2014年1月14日.