0

我得到了这段代码:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <Canvas>
        <TextBlock Name="txtblk"
                   Canvas.Left="100" Canvas.Top="100"
                   Text="ROTATE">
        </TextBlock>
    </Canvas>
</Grid>

它运行良好,我可以看到我的 TextBlock。但是如果我向它添加一个“投影”属性:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <Canvas>
        <TextBlock Name="txtblk"
                   Canvas.Left="100" Canvas.Top="100"
                   Text="ROTATE">
            <TextBlock.Projection>
                <PlaneProjection x:Name="planeProjection"
                                 CenterOfRotationX="0.5" CenterOfRotationY="0.5"
                                 RotationZ="45"/>
            </TextBlock.Projection>
        </TextBlock>
    </Canvas>
</Grid>

TextBlock 刚刚消失了!页面中没有其他控件。

谁能告诉我发生了什么?我真的被困住了。

谢谢!

PS完整的xaml如下:

<phone:PhoneApplicationPage 
x:Class="WP7Test.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="728" d:DesignHeight="480"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Landscape" Orientation="Landscape"
shell:SystemTray.IsVisible="False">

    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Canvas>
                <TextBlock Name="txtblk"
                           Canvas.Left="100" Canvas.Top="100"
                           Text="ROTATE">
                    <TextBlock.Projection>
                        <PlaneProjection x:Name="planeProjection"
                                         CenterOfRotationX="0.5"
                                         CenterOfRotationY="0.5"
                                         RotationZ="45"/>
                    </TextBlock.Projection>
                </TextBlock>
            </Canvas>
        </Grid>
    </Grid>
</phone:PhoneApplicationPage>
4

1 回答 1

0

如果我运行相同事物的 Silverlight 示例Projection Transforms Sans Math,则该效果在 Silverlight 中可以正常工作。如果我将该项目中的 XAML 复制并粘贴到手机项目中,则投影会在手机上正确呈现。如果我将您的代码粘贴到 Silverlight 中,它在 Silverlight 中可以正常工作。如果我从您的代码中修剪奇怪的嵌套网格,它仍然可以在 Silverlight 中工作,但在电话上继续失败。如果我Canvas从手机版本中删除元素删除Canvas.TopCanvas.Left附加属性,那么它可以在手机上运行。

基于这些实验,我认为这看起来像一个错误,如果它不是错误,则在我能找到的任何地方都没有提到限制。

简单的解决方法是将 应用于Projection或类似的StackPanelUIElementViewbox容器。

这是一个例子:

<Grid x:Name="LayoutRoot" Background="Transparent" ShowGridLines="True">
    <Canvas Background="Purple">
        <Viewbox Canvas.Left="100" Canvas.Top="100" >
            <Viewbox.Projection>
                <PlaneProjection x:Name="planeProjection" CenterOfRotationX="0.5" CenterOfRotationY="0.5" RotationZ="45"/>
            </Viewbox.Projection>
            <TextBlock Name="txtblk" Text="ROTATE" FontSize="288"/>
        </Viewbox>
    </Canvas>
</Grid>
于 2012-04-20T02:31:34.170 回答