TextBox接受空格但拒绝数字和字母......为什么?

时间:2014-06-06 18:23:12

标签: caliburn.micro

我在Caliburn.Micro屏幕上接受用户输入时遇到TextBoxes时遇到问题。我试图尽可能地简化事情以获得一个有效的(失败的)演示。

以下是观点:

<UserControl x:Class="Bogus.TestView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <StackPanel> <TextBlock Text="Enter some text here" /> <TextBox /> </StackPanel> </UserControl>

这里是viewmodel:

using Caliburn.Micro;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Bogus
{
    public class TestViewModel : Screen
    {
    }
}

我在WinForms控件中激活屏幕:

var w = Caliburn.Micro.IoC.Get<Caliburn.Micro.IWindowManager>();
dynamic settings = new ExpandoObject();
settings.WindowStyle = System.Windows.WindowStyle.ToolWindow;
settings.SizeToContent = System.Windows.SizeToContent.Manual;
settings.Height = 600;
settings.Width = 700;
w.ShowWindow(new TestViewModel(), settings: settings);

如果我尝试输入该文本框,只显示空格。输入&#34; Hello World!&#34;你得到一个单一的空间,就是这样。 :(

奇怪的是,我能够从这个屏幕激活其他屏幕而且我的TextBox工作得很好......但是在这个屏幕上?什么都没有。

1 个答案:

答案 0 :(得分:0)

这个问题非常有用:How to get a reference to window from a user control using Caliburn Micro

有了这个想法,我就可以做以下操作来获得按键以进入新窗口:

w.ShowWindow(viewModel, settings: settings);
var view = viewModel.GetView() as System.Windows.DependencyObject;
var win = System.Windows.Window.GetWindow(view); 
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(win);

这是正确的方法吗?有更好的解决方案吗?