Silverlight,当旋转文本框不是所有的文本显示
本文关键字:文本 显示 旋转 Silverlight | 更新日期: 2023-09-27 18:13:46
我有一个自定义控件,里面有一个文本框,根据你想让它折叠或展开来旋转,当它折叠时,我想让文本框垂直,当它展开时,我想让它水平。
问题是,当它是垂直的文本框不显示所有的文本,我一直在寻找一个答案,我理解它与方式silverlight更新它的布局。这是我的代码
private void CollapseControl()
{
CollapseCommand.Content = "E";
CollapseCommand.Margin = _btnMarginOnCollapse;
BtnZoomIn.Visibility = Visibility.Collapsed;
BtnZoomOut.Visibility = Visibility.Collapsed;
ScrollViewerStackPanel.Visibility = Visibility.Collapsed;
ZoomPanel.Visibility = Visibility.Collapsed;
this.HorizontalAlignment = HorizontalAlignment.Left;
this.Width = 40;
RotateTransform nameRotateTransform = new RotateTransform();
nameRotateTransform.Angle = 270;
Nametb.RenderTransform = nameRotateTransform;
Nametb.VerticalAlignment = VerticalAlignment.Bottom;
Nametb.Height = Nametb.Width;
Nametb.Width = Nametb.Height;
Nametb.UpdateLayout();
}
一个解决方案是使用Silverlight工具包中的LayoutTransformer
控件。
将现有的文本块包装在LayoutTransformer
<toolkit:LayoutTransformer x:Name="Namelt" ...>
<toolkit:LayoutTransformer.LayoutTransform>
<RotateTransform />
</toolkit:LayoutTransformer.LayoutTransform>
<TextBlock x:Name="Nametb" Text="Hello World" />
</toolkit:LayoutTransformer>
那么你的代码看起来像:-
((RotateTransform)Namelt.LayoutTransform).Angle = 270;
Namelt.VerticalAlignment = VerticalAlignment.Bottom;
Namelt.Height = Nametb.Width;
Namelt.Width = Nametb.Height;
我最近遇到了一个类似的问题,并提出了以下解决方案(基于Silverlight论坛上的一个帖子),这也应该有助于解决您的问题:
private void CollapseControl()
{
CollapseCommand.Content = "E";
CollapseCommand.Margin = _btnMarginOnCollapse;
BtnZoomIn.Visibility = Visibility.Collapsed;
BtnZoomOut.Visibility = Visibility.Collapsed;
ScrollViewerStackPanel.Visibility = Visibility.Collapsed;
ZoomPanel.Visibility = Visibility.Collapsed;
this.HorizontalAlignment = HorizontalAlignment.Left;
LayoutTransform lt = new LayoutTransform();
lt.Content = Nametb;
RotateTransform nameRotateTransform = new RotateTransform();
nameRotateTransform.Angle = 270;
lt.LayoutTransform = nameRotateTransform;
lt.ApplyLayoutTransform();
Nametb.UpdateLayout();
}
我刚刚写了下面的内容,我的类似问题就解决了。
layoutTransform.VerticalAlignment = VerticalAlignment.Bottom;
layoutTransform.VerticalAlignment = VerticalAlignment.Center;