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,当旋转文本框不是所有的文本显示

一个解决方案是使用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;