Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WPF,从WPF节点和所有子节点创建动态深度副本_C#_Wpf - Fatal编程技术网

C#WPF,从WPF节点和所有子节点创建动态深度副本

C#WPF,从WPF节点和所有子节点创建动态深度副本,c#,wpf,C#,Wpf,我最近正在使用WPF。我对C#和WPF还很陌生。我和某个孩子建立了一个边界。我希望从这个边框复制一个副本(动态和带子对象),并且只更改一些属性。似乎只有一个默认构造函数,没有复制构造函数 我找到了一个相关的答案: 有没有办法避免复制XAML 我的问题是:是否有一个inbuild函数可以从WPF边框构造深度副本。为什么没有复制构造函数 谢谢你的时间。我想给这个问题举两个“为什么不”的小例子 考虑以下XAML代码段: <DockPanel LastChildFill="False">

我最近正在使用WPF。我对C#和WPF还很陌生。我和某个孩子建立了一个边界。我希望从这个边框复制一个副本(动态和带子对象),并且只更改一些属性。似乎只有一个默认构造函数,没有复制构造函数

我找到了一个相关的答案:

有没有办法避免复制XAML

我的问题是:是否有一个inbuild函数可以从WPF边框构造深度副本。为什么没有复制构造函数

谢谢你的时间。

我想给这个问题举两个“为什么不”的小例子

考虑以下XAML代码段:

<DockPanel LastChildFill="False">
    <TextBlock DockPanel.Dock="Right" Text="Test"/>
</DockPanel>
SomeObject
类型可能有一个DataTemplate,因此将构建一个可视化树,但是
SomeObject
本身不是WPF特定的对象,那么您对获取border节点的深度副本的语义期望是什么


通常,您可能需要更具体地确定是要深度复制逻辑树还是可视化树。您的问题倾向于逻辑树,但我怀疑您对复制布局的视觉表示更感兴趣。有关这件事的更多细节,请咨询你最喜欢的搜索引擎。这里有两个随机点:和。

考虑将其设为用户控件,并对动态位使用依赖属性。因此,基本上,您想深度复制整个任意WPF节点,包括所有子节点?因为这就是你的边界所能包含的。您最好从问题中删除边框,因为标题看起来是特定的,而解决方案需要是通用的。@grek40您是对的。我改了标题。谢谢我真的希望有人能提供一个通用的解决方案。在此之前,再思考一下:你应该考虑MVVM模式,然后克隆你的VIEW模型。您可以根据viewmodel属性调整视图,方法是使用转换器、样式/数据触发器、模板选择器等@grek40您的评论中有一些非常有用的东西,但我仍然不相信这种情况下没有复制构造函数。
<Border>
    <ContentPresenter Content="{Binding SomeObject}"/>
</Border>