您的位置:首页 > 其它

在WPF中使用WinForm或自定义控件

2016-05-27 14:22 288 查看
WPF中,好多控件与WinForm是存在差异的,想要使用熟悉的WinForm控件,除了添加必要的System.Windows等系统库之外,还要添加如下的代码,以下是msdn上给的,初步测试没问题 。

<Window ... 这里是你WPF配置的信息,一般不用管
1. 下边一句,需要你手动添加。
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" >

<Grid>
2. 这里使用WindowsFormsHost元素来支持使用WinForm控件。
<WindowsFormsHost>
3. 这里添加你的WinForm控件到WPF中使用。
<wf:MaskedTextBox x:Name="mtbDate" Mask="00/00/0000"/>
</WindowsFormsHost>

</Grid>
</Window>


注意:必须在"引用"中添加 System.Drawing 和 WindowsFormsIntegration 这两个库。 (你忘了也没事,VS会提醒你)

自定义的控件的话,

如果是标准的,那就直接添加到控件列表中,拖放使用;

如果不是标准的,那就视情况而定。

例如:

我基于WinForm写了一个播放器的组件 AVPlayer ,在WPF中使用的时候,我选择了这样的方法:

1. 定义一个DockPanel 或 Canvas ;

2. 稍微修改一下界面元素。假设,我们使用的是DockPanel :

<DockPanel Name="m_panel"  ... 一大堆配置>

        <WindowsFormsHost Name="host" Width="555" Height="282">

            </WindowsFormsHost>

        </DockPanel>

注:DockPanel 中间添加的元素,宽和高一般都和容器一样,不然多浪费空间~~~

3. 在代码中定义 AVPlayer player = new AVPlayer();   这里不要忘记添加引用。

4. 把播放组件放到界面上。  host.Child = player;  

5. 然后,就可以照常使用了。

如有疑问或错误,请回复指出,非常感谢!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  winform wpf 控件 自定义