我试着做这样的事情:
我有一个带有我自己对象的List,在这个List中我有绘制它的所有信息,我有一个Listbox,每个图都是我在画布位置绘制的Listbox项。
我的问题是当我想要绘制名称时,因为我必须旋转名称并在名称的矩形内绘制它,但是当我旋转名称时我不知道如何在内部绘制它矩形。
我将这个数据模板用于我的列表框ItemTemplate,我根据是否要绘制图像或名称来设置可见性。
<DataTemplate x:Key="templateList">
<Canvas >
<WrapPanel
Visibility="{Binding IsStone, Converter={StaticResource converterCheckIsVisibleName}}"
Width="{Binding ObjectName.Width}"
Height="{Binding ObjectName.Height}">
<TextBlock Text="{Binding ObjectName.Name}" >
<TextBlock.RenderTransform>
<RotateTransform Angle="{Binding ObjectName.Rotate}" />
</TextBlock.RenderTransform>
</TextBlock>
</WrapPanel>
<Border BorderThickness="1" BorderBrush="Black"
Visibility="{Binding IsStone, Converter={StaticResource converterCheckIsVisibleStone}}">
<Image Source="{Binding ObjectIMG.PathImagen}"
Height="{Binding ObjectIMG.Height}"
Width="{Binding ObjectIMG.Width}"
Stretch="Fill" />
</Border>
</Canvas>
</DataTemplate>
答案 0 :(得分:8)
我不能100%确定您的问题是什么,但似乎您只想旋转一些文字并将其放入矩形中。 Rectangle
类不会使用内容元素,因此您无法使用它,但可以使用简单的Border
元素。
另一件需要注意的事情是,您应该使用在布局传递之前出现的LayoutTransform
,而不是之后应用的RenderTransform
。有关详细信息,请参阅MSDN上的FrameworkElement.LayoutTransform Property页面。尝试这样的事情:
<Border BorderBrush="Black" BorderThickness="5">
<TextBlock Text="{Binding ObjectName.Name}" >
<TextBlock.LayoutTransform>
<RotateTransform Angle="{Binding ObjectName.Rotate}" />
</TextBlock.LayoutTransform>
</TextBlock>
</Border>