2

内部にカスタムコントロールがあります。折りたたむか展開するかに応じて回転するテキストボックスがあります。折りたたまれたときはテキストボックスを垂直にし、展開したときは水平にします。

問題は、垂直の場合、テキストボックスにすべてのテキストが表示されないことです。答えを探しています。これは、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();

}
4

3 に答える 3

3

1 つの解決策は、 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;  
于 2011-11-08T22:00:39.510 に答える
0

次のように書いたところ、同様の問題が解決されました。

layoutTransform.VerticalAlignment = VerticalAlignment.Bottom;
layoutTransform.VerticalAlignment = VerticalAlignment.Center;
于 2013-09-19T09:55:05.803 に答える
0

私は最近、同様の問題に遭遇し、次の解決策 ( 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();
}
于 2012-03-28T21:25:26.467 に答える