WPF, редактирующий ширину TextBlock, меняет его положение X на холсте - PullRequest
0 голосов
/ 28 апреля 2020

Я работаю в C# WPF. У меня есть холст, и я создаю TextBlock определенной ширины внутри этого холста. TextBlock ориентирован на точку {0, 0}. Затем я go ввожу и редактирую TextBlock для увеличения ширины, а TextBlock перемещается вправо {120, 0}! Кроме того, когда я go ввожу и заново отредактирую TextBlock, чтобы уменьшить ширину до ее первоначального размера, TextBlock перемещается обратно в исходную точку {0, 0}!

Вот код, в котором я создаю TextBlock:

public ModelItem_UI(Content content)
        {
            InitializeComponent();

            TextBlock textBlock = new TextBlock();
            this.Width = content.Width;
            this.Height = content.Height;
            this.text = content.ContentText;
            this.BackgroundColor = content.BackgroundColor;
            this.TextColor = content.TextColor;
            if(content.FontHeight != 0)
                this.FontSize = content.FontHeight;

            Grid.SetColumn(myCanvas, 0);
            Grid.SetColumnSpan(myCanvas, 2000);
            Grid.SetRow(myCanvas, 0);
            Grid.SetRowSpan(myCanvas, 2000);

            textBlock.Text = content.ContentText;
            textBlock.TextWrapping = TextWrapping.Wrap;
            if(content.TransparentBackground)
            {
                textBlock.Background.Opacity = 0;
            }

            switch (content.TextAlignment)
            {
                case Process_Model_App.Content.TextAlignmentValues.Center:
                    textBlock.TextAlignment = TextAlignment.Center;
                    break;
                case Process_Model_App.Content.TextAlignmentValues.Right:
                    textBlock.TextAlignment = TextAlignment.Right;
                    break;
                default:
                    break;
            }

            // Add to the canvas:
            myCanvas.Children.Add(textBlock);

            blockName = content.ContentName;

            shapes = BlockShapes.createShape(typeof(Content));
            highlightRect = new Rectangle();
            highlightRect.Height = shapes[0].Height;
            highlightRect.Width = shapes[0].Width;
            highlightRect.RadiusX = shapes[0].RadiusX;
            highlightRect.RadiusY = shapes[0].RadiusY;
            highlightRect.Stretch = shapes[0].Stretch;
            highlightRect.RenderTransform = shapes[0].RenderTransform;
            highlightRect.RenderTransformOrigin = shapes[0].RenderTransformOrigin;
            highlightRect.Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));
            highlightRect.StrokeThickness = 4;
            highlightRect.Visibility = Visibility.Hidden;

            myCanvas.Children.Add(highlightRect);
        }

myCanvas - это холст, который я использую. Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...