C# WPF中的ScaleTransform正在呈现错误的大小

C# WPF中的ScaleTransform正在呈现错误的大小,c#,wpf,scaletransform,C#,Wpf,Scaletransform,我试图理解为什么ScaleTransform(在Windows Phone 8.0下测试)使用控件的父维度而不是控件本身进行渲染。我已经设置了一个演示应用程序来显示这种行为,如下所示 尺寸和层次结构是有原因的,这就是为什么我手动设置宽度和高度,因为它非常接近真实的应用程序 我所期望的是child1(黄色的那一个),它是768x1228,它的刻度是0.625,它将自己呈现为480x768,但它呈现为300x480(例如,它在480的0.625%处呈现,而不是768) 有什么线索吗 public p

我试图理解为什么
ScaleTransform
(在Windows Phone 8.0下测试)使用控件的父维度而不是控件本身进行渲染。我已经设置了一个演示应用程序来显示这种行为,如下所示

尺寸和层次结构是有原因的,这就是为什么我手动设置
宽度
高度
,因为它非常接近真实的应用程序

我所期望的是
child1
(黄色的那一个),它是
768x1228
,它的刻度是
0.625
,它将自己呈现为
480x768
,但它呈现为
300x480
(例如,它在
480
0.625%
处呈现,而不是
768

有什么线索吗

public partial class MainPage : PhoneApplicationPage
{
    private Grid root;

    public MainPage()
    {
        InitializeComponent();
        root = new Grid() {
            Width = 480,
            Height = 768,
            HorizontalAlignment = HorizontalAlignment.Left,
            VerticalAlignment = VerticalAlignment.Top,
            Background = new SolidColorBrush(Colors.Blue)
        };
        Content = root;
        Loaded += MainPage_Loaded;
    }

    void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        var parent1 = new Grid {
            Background = new SolidColorBrush(Colors.Red),
            HorizontalAlignment = HorizontalAlignment.Left,
            VerticalAlignment = VerticalAlignment.Top,
            Width = 480,
            Height = 768
        };

        root.Children.Add(parent1);

        var child1 = new Grid {
            Background = new SolidColorBrush(Colors.Yellow),
            Width = 768,
            HorizontalAlignment = HorizontalAlignment.Left,
            VerticalAlignment = VerticalAlignment.Top,
            Height = 1228,
            RenderTransform = new ScaleTransform() {
                CenterX = 0,
                CenterY = 0,
                ScaleX = 0.625,
                ScaleY = 0.625
            }
        };

        parent1.Children.Add(child1);
    }
}    

好吧,看起来这一切都是由于
网格
组件剪辑了它的子元素,如中所述。在我将代码更改为具有
画布
搁浅我的
网格
后,应用程序按预期工作


不过,我仍然觉得这个“解决方案”很奇怪。

我不熟悉windows phone编程,但我猜
child1
的大小可能是强制的(强制的)在应用转换之前,将其设置为其父级的大小。若要进行检查,可以尝试将
child1
的大小设置为小于
480x768
的值。如果是这样,ScaleTransform将正常工作,然后您的问题将改变。