0

少し問題があります。ユーザーが他のことをしてテキストを表示できるテキストブロックのサイズを選択できるようにしています。ここでの問題は、テキストブロックに境界線を追加して、ユーザーがどれだけ大きくなったかを示す必要があることです。次のコードを適用すると、そのシナリオでプログラムがクラッシュするだけです。

                //create a TextBlock at desired position

                TextBlock tmpTextBlock = new TextBlock
                {
                    Width = 166,
                    Height = Math.Max(tmpY1, tmpY2) - Math.Min(tmpY1, tmpY2),
                    VerticalAlignment = VerticalAlignment.Top,
                    Margin = new Thickness(0, Math.Min(tmpY1, tmpY2) - 50, 0, (int)WeekGrid.ActualHeight - Math.Max(tmpY1, tmpY2)),             
                    Text = "Type stuff here"
                };

                tmpTextBlock.Holding += tmpTextBox_Holding;
                tmpTextBlock.RightTapped += tmpTextBox_RightTapped;

                WeekGrid.Children.Add(tmpTextBlock);
                Grid.SetRow(tmpTextBlock, 1);


                //add the border - these lines produce the problem

                Border border = new Border
                {
                    Child = tmpTextBlock,
                    Background = this.Resources["ApplicationPageBackgroundThemeBrush"] as SolidColorBrush,
                    BorderBrush = this.Resources["ApplicationForegroundThemeBrush"] as SolidColorBrush,
                    BorderThickness = new Thickness(1),
                };

次の例外は、引数の例外です。

値が期待される範囲内にありません。

編集

おっと、私はその問題を解決しました。グリッドへの Textblock の追加を削除する必要がありました。私が今抱えている問題は、テキストブロックの周りではなく、グリッドの周りに境界線が表示されることです!

次のコードはそれを可能にしました:

                Border border = new Border
                {
                    Child = tmpTextBlock,
                    Background = this.Resources["ApplicationPageBackgroundThemeBrush"] as SolidColorBrush,
                    BorderBrush = this.Resources["ApplicationForegroundThemeBrush"] as SolidColorBrush,
                    BorderThickness = new Thickness(1),
                    Padding = new Thickness(24)
                };

                WeekGrid.Children.Add(border);
                Grid.SetRow(border, 1);

編集2

問題が再び解決しました。もちろん、テキストブロックのマージン設定を削除する必要がありました!

どうもありがとうございました!

こんにちは、FunkyPeanut

4

1 に答える 1

0

例外を投稿できますか?

明らかにあなたのコードにエラーがあります:

            WeekGrid.Children.Add(tmpTextBlock);
            Grid.SetRow(tmpTextBlock, 1);

            //add the border - these lines produce the problem

            Border border = new Border
            {
                Child = tmpTextBlock,
                Background = this.Resources["ApplicationPageBackgroundThemeBrush"] as SolidColorBrush,
                BorderBrush = this.Resources["ApplicationForegroundThemeBrush"] as SolidColorBrush,
                BorderThickness = new Thickness(1),
            };

Border単一の要素を受け入れる「コンテナ」のようなコンポーネントです。次のように切り替える必要があります。

         Border border = new Border
            {
                Child = tmpTextBlock,
                Background = this.Resources["ApplicationPageBackgroundThemeBrush"] as SolidColorBrush,
                BorderBrush = this.Resources["ApplicationForegroundThemeBrush"] as SolidColorBrush,
                BorderThickness = new Thickness(1),
            };

            WeekGrid.Children.Add(border);
            Grid.SetRow(border, 1);

また、リソースがアクセスに「使用可能」かどうかも確認する必要があります。

于 2013-10-12T14:18:06.660 に答える