C# 将其中一个元素旋转到WPF时将其保持在一起

C# 将其中一个元素旋转到WPF时将其保持在一起,c#,wpf,xaml,C#,Wpf,Xaml,如何旋转StackPanel或其他容器中的一个项目并保持对齐 我想做的是有一个标签,标签上有项目的名称,文本上下排列,结果值将在它的正下方不旋转。原因是项目名称很长,但结果只是一个1或2位数字,因此如果标签上下移动,我可以在屏幕上压缩更多数据 似乎项目围绕其原始位置(左上?)旋转,而不是围绕其中心旋转,因此,在项目原始位置下方居中的项目最终会偏侧,但旋转项目的高度和宽度之间的差异 以下是我迄今为止尝试过的代码: <StackPanel Orientation="Vertical" Marg

如何旋转StackPanel或其他容器中的一个项目并保持对齐

我想做的是有一个标签,标签上有项目的名称,文本上下排列,结果值将在它的正下方不旋转。原因是项目名称很长,但结果只是一个1或2位数字,因此如果标签上下移动,我可以在屏幕上压缩更多数据

似乎项目围绕其原始位置(左上?)旋转,而不是围绕其中心旋转,因此,在项目原始位置下方居中的项目最终会偏侧,但旋转项目的高度和宽度之间的差异

以下是我迄今为止尝试过的代码:

<StackPanel Orientation="Vertical" Margin="0, 0, 0, 0">
        <Label Name="x" Content="{Binding Path=SummarizedTestName}" Height="50" HorizontalAlignment="Center" FontSize="14">
            <Label.RenderTransform>
                <RotateTransform Angle="-90" />
            </Label.RenderTransform>
        </Label>
        <Label Content="{Binding Path=Count}" Width="50" HorizontalAlignment="Center" FontSize="14" />
</StackPanel>

我曾想过使用TransformGroup,但问题是SummaredTestName字符串的长度在编译时是未知的(使用实体框架从数据库中提取)。我也尝试过水平对齐和垂直对齐的变体,但由于事物旋转的方式,它们似乎都不起作用。

您可以尝试使用该属性,而不是
渲染转换。由于
RenderTransform
在解析布局后旋转名称标签,因此计数标签的位置与名称标签仍然是水平的一样

使用
LayoutTransform
将在布局解析之前旋转名称标签,计数标签应排列整齐。

您可以尝试使用该属性而不是
RenderTransform
。由于
RenderTransform
在解析布局后旋转名称标签,因此计数标签的位置与名称标签仍然是水平的一样


使用
LayoutTransform
可以在布局解析之前旋转名称标签,计数标签应该排列整齐。

使用Eren的答案解决了这个问题。结果如下:

在使用LayoutTransform之后,这方面的代码非常简单明了:

 <StackPanel Orientation="Vertical" >
    <Label Name="x" Content="{Binding Path=SummarizedTestName}" FontSize="14" HorizontalAlignment="Left" Margin="0, 0, 0, 10" >
       <Label.LayoutTransform>
           <RotateTransform Angle="90" />
       </Label.LayoutTransform>
    </Label>
    <Label Content="{Binding Path=Count}" FontSize="14" HorizontalAlignment="Right" VerticalAlignment="top" Width="50" />
</StackPanel>


谢谢你,埃伦!有人给他投票,因为我还不能;)

用埃伦的答案解决了这个问题。结果如下:

在使用LayoutTransform之后,这方面的代码非常简单明了:

 <StackPanel Orientation="Vertical" >
    <Label Name="x" Content="{Binding Path=SummarizedTestName}" FontSize="14" HorizontalAlignment="Left" Margin="0, 0, 0, 10" >
       <Label.LayoutTransform>
           <RotateTransform Angle="90" />
       </Label.LayoutTransform>
    </Label>
    <Label Content="{Binding Path=Count}" FontSize="14" HorizontalAlignment="Right" VerticalAlignment="top" Width="50" />
</StackPanel>


谢谢你,埃伦!有人给他投票,因为我还不能;)

这完全正确。我没有意识到布局和渲染变换之间的区别,因为在过去我只移动一个物体,而不是两个相互关联的物体。我将把我的工作代码粘贴到下面。这完全正确。我没有意识到布局和渲染变换之间的区别,因为在过去我只移动一个物体,而不是两个相互关联的物体。我将在下面粘贴我的工作代码。