Metro App(ScaleTransform)ContentPresenter的内容

时间:2014-08-25 18:11:29

标签: c# xaml containers contentpresenter

我有一个ContentPresenter,我尝试扩展Content = ""(FrameworkElement)`。 因为如果Content.Size很大就会被切断。我准备这些照片来解释我的问题。

我们从这里开始。如你所见,有一部分缺失(黄色面板被诅咒)。

This is the result without <code>ScaleTransform</code>

所以我尝试的是ScaleTransform。 (XAML)

        <ContentPresenter Content="SomeContent"
                          Grid.Row="1"
                          Grid.Column="0">
            <ContentPresenter.RenderTransform>
                <ScaleTransform ScaleX="0.75" ScaleY="0.75"></ScaleTransform>
            </ContentPresenter.RenderTransform>

        </ContentPresenter>

所以在我添加ScaleTransform之后我得到了这个结果。 enter image description here 显然我的内容已经缩放,但它仍然被削减。

所以我停止在XAML中尝试它,这就是c#中出现的内容。

    public static FrameworkElement ScaleContent(FrameworkElement element, Size space)
    {
        ScaleTransform scaleTransform = new ScaleTransform();
        double height = element.ActualHeight;
        double width = element.ActualWidth;

        if (height == 0 || width == 0)
        {
            element.Measure(new Size(space.Width,
                space.Height));

            element.Arrange(new Rect(0, 0, element.DesiredSize.Width, element.DesiredSize.Height));
            height = element.ActualHeight;
            width = element.ActualWidth;

        }

        double scaleWidth = space.Width / width;
        double scaleHeight = space.width / height;

        scaleTransform.ScaleX = scaleWidth;
        scaleTransform.ScaleY = scaleHeight;

        element.RenderTransform = scaleTransform;
        return element;
    }

这就是出来的。 ScaleTransform in Class

让您看到完整的示例。我以更大的格式保存了一张图片,内容适合。 This should it look like

那么您认为这是什么问题? 谢谢!

0 个答案:

没有答案