【发布时间】:2012-01-23 00:42:25
【问题描述】:
我有一个类似这样的网格:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="MyHeader1"/>
<myNamespace:MyRotatedTextBlock
Grid.Row="1" Grid.Column="0" MyText="MyHeader2"/>
</Grid>
而 myNamespace:MyRotatedTextBlock 是一个自定义的 WPF 控件,如下所示:
<TextBlock Text="{Binding MyText}"
HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock.LayoutTransform>
<RotateTransform Angle="90"/>
</TextBlock.LayoutTransform>
</TextBlock>
问题是当我打开窗口时,我看不到包含旋转文本的第二行。但是,如果我用"100" 替换第二行的Height(设置为"Auto"),那么我可以看到显示了第二行并且它包含MyHeader2
【问题讨论】:
-
您的控件是否包含任何文本? TextBlock 应自动调整其内容的大小。我可以看到您已将控件的 Text 属性绑定到“MyText”,并且您将该属性设置为“MyHeader2” - 您的自定义控件中的 Text 绑定是否有问题?
-
(我编辑了问题。)不正确绑定,因为当我手动扩展行高时显示。
-
为什么你实际上引入了一个新属性 MyText 而没有使用你(可能)派生自的 TextBlock 的 Text 属性?
-
我真傻!谢谢你。这解决了问题:) 请发布您的答案,以便我接受。
标签: wpf grid layouttransform