這是有點舊,但希望這將回答直接的問題。
可以創建自己的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