您只能在代码后面设置这些属性,因为 WinForms 不支持 DependencyProperty 和 -Object 的概念,而这将是在 XAML 中设置属性值的前提条件。
但是,
WindowsFormsHost
仍然通过其类型为WindowsFormsHost.Child
的System.Windows.Forms.Control
属性公开了托管的WinForms控件。通过对该控件的引用,您应该能够像在 WinForms 中一样对其进行编程。
XAML 标记:
<WindowsFormsHost Grid.Row="1" Name="AlertViewerHost">
<common:AlertViewer x:Name="alertViewer"/>
</WindowsFormsHost>
在 C# 中,例如在代码隐藏文件的 Window.Loaded 偶数处理程序中:
var alertViewer = AlertViewerHost.Child as AlertViewer;
// make sure to use the Drawing/WinForms classes that often
// have the same name as the WPF classes.
alertViewer.Font = new System.Drawing.Font ("Microsoft Sans Serif", 8f,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
注意:我没有测试过。我不知道它是否能达到预期的效果。