gpt4 book ai didi

c# - Stackpanel 中的自动调整大小和居中文本 block

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:09 24 4
gpt4 key购买 nike

我目前正在致力于将文本 block 动态插入 Stackpanel。这必须进行多次,并且无法事先知道 Stackpanel 的大小。

目前,我有这样的东西:

    TextBlock tmp = new TextBlock {
Text = curField.FieldName,
Foreground = new SolidColorBrush(Colors.Red),
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
};
tmp.MouseLeftButtonUp += imgFormImage_MouseLeftButtonUp;
curField.assocStackpanel.Children.Add(tmp);
curField.assocStackpanel = curField.assocStackpanel;
SelectedFields.Add(curField);

现在,文本 block 只是在 Stackpanel 中水平居中显示,而不是垂直居中。所以我需要解决这个问题。此外,理想情况下,我希望能够动态确定文本 block 的字体大小,以便它填充可用空间。现在我认为它只是采用默认值(我相信)10。

最佳答案

我决定采用以下方法:

    double xpos = Canvas.GetLeft(curField.assocGrid);
double ypos = Canvas.GetTop(curField.assocGrid);
double width = curField.assocGrid.Width;
double height = curField.assocGrid.Height;

TextBlock tmp = new TextBlock {
Text = curField.FieldName,
Foreground = new SolidColorBrush(Colors.Red),
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center,
FontSize = 30
};
Grid grd = new Grid();
grd.Children.Add(tmp);
Viewbox vb = new Viewbox();
vb.Child = grd;
vb.Width = width;
vb.Height = height;
cvsCenterPane.Children.Add(vb);
Canvas.SetLeft(vb, xpos);
Canvas.SetTop(vb, ypos);
curField.scaleViewbox = vb;
SelectedFields.Add(curField);

首先将文本 block 包裹在网格中,然后将生成的网格包裹在 View 框中。我们得到一个初始的 1:1 比例。然后通过改变 View 框的尺寸,我们可以获得所需的结果填充。我希望我能做但找不到方法的一件事是将生成的文本在缩放的 View 框内居中。现在,即使 View 框左侧有空间,它也会左对齐。我不确定这是什么原因。

关于c# - Stackpanel 中的自动调整大小和居中文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com