gpt4 book ai didi

c# - WPF Canvas.ActualWidth 为零,即使在加载之后

转载 作者:行者123 更新时间:2023-11-30 16:12:36 27 4
gpt4 key购买 nike

我无法将 Canvas 的 ActualWidth 设为任何非零值。我简化了真实场景,并在 VS 中专门创建了一个新的 WPF 应用程序来获取非零值(和理解)。不幸的是,我只得到零。我觉得我缺少一些基本的 WPF 理解:我对 WPF 不是很熟悉。

我复制了 MDSN demo ,稍微修改一下,我现在有

public partial class MainWindow : Window {

private Canvas myCanvas;
public MainWindow()
{
InitializeComponent();
CreateAndShowMainWindow();
}
private void CreateAndShowMainWindow()
{
// Create a canvas sized to fill the window
myCanvas = new Canvas();
myCanvas.Background = Brushes.LightSteelBlue;

// Add a "Hello World!" text element to the Canvas
TextBlock txt1 = new TextBlock();
txt1.FontSize = 14;
txt1.Text = "Hello World!";
Canvas.SetTop(txt1, 100);
Canvas.SetLeft(txt1, 10);
myCanvas.Children.Add(txt1);

// Add a second text element to show how absolute positioning works in a Canvas
TextBlock txt2 = new TextBlock();
txt2.FontSize = 22;
txt2.Text = "Isn't absolute positioning handy?";
Canvas.SetTop(txt2, 200);
Canvas.SetLeft(txt2, 75);
myCanvas.Children.Add(txt2);

Grid content = new Grid();
content.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
content.Children.Add(myCanvas);
this.Content = content;
this.Loaded += MainWindow_Loaded;
}

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var canvasRenderWidth = myCanvas.RenderSize.Width;
var canvasActualWidth = myCanvas.ActualWidth;
} //place breakpoint here

我希望 Canvas 在加载后具有与文本框相同的 ActualWidth,但在指定的断点处,它为零。请注意,运行上述代码时文本框是可见的。

谁能告诉我如何使 myCanvas.ActualWidth 自动成为 textbox.ActualWidth 或者告诉我为什么不应该这样做?

在我的实际使用场景中,我在 Grid 的 in column 中有一个 Canvas,其中 columndefinition 的宽度设置为 auto,所以我希望它随着 Canvas 宽度的增加而增加。然而,这失败了,我怀疑这是因为 canvas.ActualWidth 为零。

最佳答案

删除这一行,它将起作用:

content.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });

注意: Canvas 永远不会调整自身大小以适应其内容。文本在您的示例中可见的原因是 Canvas 没有剪裁它的内容。

当你设置

myCanvas.ClipToBounds = true;

文字也会消失。

关于c# - WPF Canvas.ActualWidth 为零,即使在加载之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22713086/

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