WPF C#添加到窗口

时间:2015-03-11 22:58:50

标签: c# wpf

如何在窗口或网格中添加System.Windows.Forms.RichTextBox()。无需添加WindowsFormsHost()。这是我的代码:

的.xaml

             <Grid Name="Grid1">
             </Grid>
        </Window>

.xaml.cs

        Host1 = new WindowsFormsHost();
        Host1.Margin = new Thickness(8, 12, 3, 3);
        Host1.Height = 315;
        Host1.Width = 570;
        Host1.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        Host1.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;

        richTextBox1 = new System.Windows.Forms.RichTextBox();
        richTextBox1.Height = 315;
        richTextBox1.Width = 570;
        richTextBox1.TextChanged += new EventHandler(richTextBox1_TextChanged);

        Host1.Child = richTextBox1;
        Grid1.Children.Add(Host1);

我想删除Host1,这会让代码太麻烦。如何直接将richTextBox1添加到窗口或直接添加到Grid1 richTextBox1

2 个答案:

答案 0 :(得分:2)

解决方案非常简单:不要使用控件的Windows窗体版本。

而是使用System.Windows.Controls中包含的RichTextBox或WPF Toolkit的Community Edition中的free RichTextBox

答案 1 :(得分:2)

你做不到。

Windows窗体和WPF是两种完全不同的技术,具有完全不同的基础架构,渲染堆栈,事件模型,输入模型等。

要在WPF页面中托管WinForms控件,您需要一些东西来托管WinForms控件并弥合WPF和WinForms之间的差距,编组事件等。相反,要在WinForms页面中托管WPF控件,您必须使用ElementHost班。

您可能需要考虑使用WPF的RichTextBox控件。

或者,如果您发现WinForms RichText控件太麻烦,请考虑使用许多供应商/来源提供的众多WPF RichText控件之一。