0

Windows Phone の 2048px の最大サイズ制限にRichTextBox対処するために、複数作成したいと考えています。scrollable-textblockソリューションUIElementがあることは承知しています。

ここに私のテストコードがあります:

RichTextBox rtb = new RichTextBox();
rtb.TextWrapping = TextWrapping.Wrap;
rtb.FontSize = (Application.Current.Resources["PhoneFontSizeMedium"] as double?).Value;
rtb.FontFamily = Application.Current.Resources["PhoneFontFamilyNormal"] as FontFamily;
rtb.Width = this.Width;
Run run = new Run();
run.Text = "Hello World.Hello World.Hello World.Hello World.Hello World.";
Paragraph para = new Paragraph();
para.Inlines.Add(run);
rtb.Blocks.Add(para);
double rtbh = rtb.ActualHeight;
BodyPanel.Children.Add(rtb);

BodyPanelが であるStackPanel場合、アプリケーションは問題なく動作しますが、ActualHeightプロパティはデバッグ ウィンドウで常に 0 を返します。

XAML でを定義し、RichTextBoxそのコンテンツを C# で設定すると、そのサイズ プロパティはすべて正常です。

では、純粋な C# で RichTextBox を作成し、そのサイズを測定するにはどうすればよいでしょうか?

ところで、2048px の制限に関する公式ドキュメントは見つかりません。

4

1 に答える 1

0

RichTextBoxがUIにレンダリングされないため、ActualHeightプロパティは0を返します。UIにまだ追加されていない要素を測定しようとしているため、その高さは0です。UIに追加してレンダリングされると、正しいActualHeightが得られます。

このコードを試すことができます:

            RichTextBox rtb = new RichTextBox();
            rtb.TextWrapping = TextWrapping.Wrap;
            rtb.FontSize = 12;
            rtb.FontFamily = new FontFamily("Arial");
            rtb.Width = this.Width;
            Run run = new Run();
            run.Text = "Hello World.Hello World.Hello World.Hello World.Hello World.";
            Paragraph para = new Paragraph();
            para.Inlines.Add(run);
            rtb.Blocks.Add(para);

            BodyPanel.Children.Add(rtb);
            Dispatcher.BeginInvoke(() =>
                {
                    double rtbh = rtb.ActualHeight;
                });
于 2012-10-03T14:28:23.303 に答える