我的軟件創建了相當複雜的石器,將在畫布上繪製。由於這是多次顯示(預覽窗口,更大的視圖,...)我想緩存繪製的畫布。 我的第一個嘗試是爲什麼我不能將畫布對象分配給現有的畫布?
XAML:
<Canvas Name="MyCanvas" />
後面的代碼:
public MainWindow()
{
InitializeComponent();
Canvas NewCanvas = new Canvas();
TextBlock txt1 = new TextBlock();
txt1.Text = "Hello World!";
Canvas.SetTop(txt1, 10);
Canvas.SetLeft(txt1, 10);
NewCanvas.Children.Add(txt1);
MyCanvas = NewCanvas;
}
但是,這並不表明任何東西。我可以,但是替換
MyCanvas.Children.Add(NewCanvas);
最後一行現在我可以看到我的畫布,但如果我嘗試打開另一個窗口,顯示同樣的帆布
Window NewWindow = new Window();
NewWindow.Content = NewCanvas;
NewWindow.Show();
我得到一個System.ArgumentException:
「必須斷開當前父指定的子之前 視覺附加到新的父視覺。」
我研究了克隆canvas對象,但canvas對象不可序列化,並且XamlWriter需要在自定義編寫的UIElements類中使用特殊的構造函數,但我不知道它究竟需要什麼。