我在接受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>
以下是视图模型:
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);如果我试图键入那个文本框,只会显示空格。输入“你好世界!”你只有一个空间,就这样。:(
奇怪的是,我能够激活这个屏幕上的其他屏幕,而TextBoxes只在这个屏幕上工作fine...but?没什么。
发布于 2014-06-06 19:57:28
这个问题非常有用: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);这样做对吗?有没有更好的解决办法?
https://stackoverflow.com/questions/24088363
复制相似问题