转换为图像的WPF Xaml控件具有不正确的布局

时间:2017-01-31 20:15:21

标签: wpf wpf-controls

我有一个控件,我正在使用此处的方法转换为图像:

Force rendering of a WPF control in memory

不幸的是我有一个复杂的布局,似乎“折叠”的控件实际上并没有在输出图像中正确隐藏。

尝试:

  • 多次致电UpdateLayout
  • 将控件大小更改为1像素
  • 使用ViewBox

如果某些东西与底部对齐并且被转换器隐藏,它似乎会影响DockPanel。

<DockPanel LastChildFill=True>
    <Something Dock.Panel="Top" />
    <Something Dock.Panel="Bottom" Binding="{Binding XXXXX, Converter={StaticResource booleanConverter}}"/>
    <Something Dock.Panel="Bottom" Binding="{Binding YYYYY, Converter={StaticResource booleanConverter}}"/>
    <Something />
</DockPanel>

一切都在Xaml编辑器中显示得很好,或者在运行时在真实的可见控件中使用。

1 个答案:

答案 0 :(得分:0)

最后,我不得不使用触发器将高度设置为零,而不是将Collapsed应用于元素。当然,这意味着必须将任何边距转换为填充,如果需要,可以使用嵌套面板。

在这个例子中我有一个边框控件 - 所以我不得不删除Visibility属性并改为使用此触发器。

    <Border>
        <Border.Style>
            <Style>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding XXXXX, Converter={StaticResource booleanConverter}}" Value="true">
                        <Setter Property="Border.Height" Value="0" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
    </Border>