这是有点旧,但希望这将回答直接的问题。
可以创建自己的xaml文本框。在解决方案资源管理器中右键单击您正在处理的项目。添加新项目。查找Visual C#项目 - WPF。然后创建一个用户控件(WPF),它具有您想要的首选名称(例如 - XamlTextBox.xaml)。
创建用户控件后,请继续并尽可能简化设计。将大小设置为您想要的文本框的确切大小,然后从工具箱中插入一个文本框。将文本框放在您希望看到的方式中。 (当在WinForms代码中创建XamlTextBox时,可能会在代码中完成调整大小和其他属性)
转到用户控件的代码。请确保您添加/更改下列代码行:
///All of the original given references should not be removed only add to this list
using System.Windows.Forms.Integration; //Make sure this is part of your project references
namespace ProjectName {
public partial class XamlTextBox : UserControl {
public ElementHost Parent {
get { return _elementHost; }
}
private ElementHost _elementHost;
public XamlTextBox(ElementHost elhost) {
InitializeComponenet();
_elementHost = elhost;
}
public void SetParentText() {
Parent.Text = this.textBox1.Text;
}
}
}
此XamlTextBox现在可以根据需要在您的窗体中实现。
public partial class MainForm: Form {
ElementHost SubjectTBox = new ElementHost();
public MainForm() {
InitializeComponent();
SubjectTBox.Size = new Size(545, 20);
SubjectTBox.Location = new Point(77, 12);
XamlTextBox subject = new XamlTextBox(SubjectTBox);
subject.SubjectTBox.SpellCheck.IsEnabled = true;
SubjectTBox.Child = subject;
this.Controls.Add(SubjectTBox);
}
}
这将允许您现在在窗体上看到XamlTextBox。
如果你现在想要访问文本,你可以使用此行代码到XamlTextBox文本传递回父ElementHost的:
((XamlTextBox)SubjectTBox.Child).SetParentText();
现在,您可以访问使用SubjectTBox.Text文本。
例如 - label1.Text = SubjectTBox.Text;
或者,而不是通过代码手动调用SetParentText方法,如上所示。您可以将TextChanged事件设置为该方法。这可以在XamlTextBox控件的设计编辑器中完成。
实际上,你可能会做所有,如果不是大多数,在代码中;但是这样可以更容易地形象化,并且您可以创建自己的XamlControl库,该库可用于任何WinForm应用程序。
希望这会更直接地回答问题,而不是告诉你改变一切
什么是'elementHost'这里? –
将调试点放在第二行,检查elementHost.Child在巡视窗口中。 –
elementHost1只是一个简单的对象,我从工具栏拖放并放置到主持wpf。 根据检查员,这个孩子是Heat.testWPF – Jeebwise