【问题标题】:Resize ElementHost to size of the hosted XAML UserControl将 ElementHost 的大小调整为托管 XAML UserControl 的大小
【发布时间】:2009-07-06 09:22:23
【问题描述】:

我想在我的 Windows 窗体应用程序中添加一个扩展面板。我正在查看是否可以使用 WPF Expander 控件来实现这一点。我创建了一个 Xaml UserControl,我从 Expander 而不是 UserControl 继承。我在 Expander 上有一个触发器来设置它的大小。

是否可以通过更改 ElementHost 的高度来反映孩子大小的变化?还是我最好在 Windows 窗体中创建一个扩展面板?

我正在使用 C# .Net 3.5。

干杯

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    您从 Expander 继承而不是在 UI 中使用扩展器有什么特别的原因吗?

    如果您设置了 Expander 的 H/V Alignment 属性,您应该能够在没有尺寸触发器的情况下获得大多数标准尺寸调整行为。根据我的经验,扩展器的内容部分会自动调整大小以适应。

    如果您尝试完全删除标题部分,那么您可能会考虑为 Expander 创建自己的 ControlTemplate。

    【讨论】:

      【解决方案2】:

      是的。您需要在最外层的 WPF 控件中覆盖 MeasureOverride,将大小从 WPF 坐标转换为设备坐标,然后更新 ElementHost.Size

      因为你已经继承了Expander

      1. 覆盖MeasureOverride 方法
      2. 测量计算后,使用PresentationSource.From(visual).CompositionTarget.TransformToDevice.Transform(point)获取设备坐标
      3. 更新ElementHost.Size

      您的Expander 子类实例需要一个指向ElementHost 的指针来执行此操作。

      更通用的解决方案是创建一个新类来处理同步。它将继承FrameworkElement 并成为ElementHost 的直接子代。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 2014-01-12
        • 2013-12-27
        • 1970-01-01
        相关资源
        最近更新 更多