gpt4 book ai didi

c# - 在 WPF 的另一个页面上使用现有 Canvas

转载 作者:行者123 更新时间:2023-11-30 22:12:53 25 4
gpt4 key购买 nike

我是 WPF 的新手,我喜欢在另一个 xaml 页面上使用带有很多子项的现有 Canvas 。我将它保存在一个全局属性中,我想这样使用它:

this.DataContext = new TimeDesignerViewModel();
this.myCanvas = (this.DataContext as TimeDesignerViewModel).TdCanvas;

当我加载页面时, Canvas 上没有任何内容,但在代码隐藏中,有子项。我做错了什么?

最佳答案

你不应该在 ViewModels 中有 UIElements。其次,在 WPF 中不能有两个相同控件的父级。因此,如果您有一个 windowCanvas 子级,则该 Canvas 的同一实例不能是其他 window/UserControl/Page 的子级。但是如果你想在两个地方都有相同的布局,你可以在 App.xamlApplication.Resources 中将你的 Canvas 定义为 Resource,比如

<Application.Resources>

<Canvas x:Key="myCanvas" x:Shared="false">
</Canvas>
</Application.Resources>

确保设置 x:Shared="false"以便在每次资源需求时创建新实例。

现在,无论你想拥有这个资源,你都可以在 xaml 中直接引用 {StaticResource myCanvas}

或者在代码中你可以像 Application.Current.Resources["myCanvas"] as Canvas

关于c# - 在 WPF 的另一个页面上使用现有 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481084/

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