1

我有主窗口和另一个窗口。在第二个窗口中我创建了新canvas的,我想从主窗口更改它的属性,我尝试失败了:

这是第二个窗口的类:

public partial class window2 : Window
{
    public Canvas painting = new Canvas();

    public window2()
    {
    }
}

在这里我尝试从主窗口更改其属性:

window2 paint = new window2();

private void button1_Click(object sender, RoutedEventArgs e)
{
    paint.painting.Background = Brushes.Black;
}

当我单击按钮时,它什么也不做。

编辑:

我认为如果我使用 Application.current.properties 并存储画布对象会更好,但我不知道如何使用它,我试过这个:

Application.Current.Properties["p1"] = painting;

现在如何使用我刚刚创建的“p1”变量从主窗口设置属性?我试过p1.background了,但我不能使用 p1 作为变量,那我该怎么做呢?

4

2 回答 2

1

您的window2构造函数应包含以下内容:

this.AddChild(painting);

每当您创建新控件(如Canvas)时,都应设置其父容器。

这是我来自window2的代码:

public Canvas painting = new Canvas();

public window2()
{
    this.AddChild(painting);
}

和主窗口:

private void button1_Click(object sender, RoutedEventArgs e)
{
    window2 w = new window2();
    w.Show();
    w.painting.Background = Brushes.Black;
}

我相信你说的是你有数量不确定的画布,你想访问它们。我建议您将它们保存在List画布中或HashTable(您需要使用System.Collections命名空间)中。也不要忘记设置父容器。

于 2012-09-16T12:14:29.867 回答
0

就 WPF 控件而言, ACanvas有点奇怪。它的大小可能为零,因此您看不到变化。尝试硬编码大小以检查代码是否有效。在window2构造函数中这样做:

painting.Width = 100;
painting.Height = 100;
于 2012-09-16T11:39:16.133 回答