clone 可以用MemberwiseClone来复制一个类
但这个复制是浅复制,创建一个新的object然后复制值字段,对于引用就直接复制引用,不复制引用的本身,指向同样引用
如果要复制引用,可以使用序列化和反序列化复制类
序列化和反序列化可以使用
序列化本来有BinaryFormatter 而现在没有了SoapFormatter
可以用的微软的XmlSerializer,需要using System.Xml.Serialization;
Nuget下载很多的json Newtonsoft.Json
需要在项目管理
安装
简单的通讯录
public class caddressBook: notify_property
{
public caddressBook()
{
}
public string id
{
set
{
_id = value;
OnPropertyChanged();
}
get
{
return _id;
}
}
public string name
{
set
{
_name = value;
OnPropertyChanged();
}
get
{
return _name;
}
}
public string contact
{
set
{
_contact = value;
OnPropertyChanged();
}
get
{
return _contact;
}
}
public string address
{
set
{
_address = value;
OnPropertyChanged();
}
get
{
return _address;
}
}
public string city
{
set
{
_city = value;
OnPropertyChanged();
}
get
{
return _city;
}
}
public string comment
{
set
{
_comment = value;
OnPropertyChanged();
}
get
{
return _comment;
}
}
public bool accord
{
set
{
value = false;
}
get
{
if (string.IsNullOrEmpty(name))
{
return false;
}
return true;
}
}
private string _id;
private string _name;
private string _contact;
private string _address;
private string _city;
private string _comment;
}
notify_property是通知
public class notify_property : INotifyPropertyChanged
{
public notify_property()
{
_reminder = new StringBuilder();
}
public event PropertyChangedEventHandler PropertyChanged;
public string reminder
{
set
{
if (string.IsNullOrEmpty(value))
{
_reminder.Clear();
}
else
{
_reminder.Append(value + "\r\n");
}
OnPropertyChanged("reminder");
}
get
{
return _reminder.ToString();
}
}
public void UpdateProper<T>(ref T properValue , T newValue , [System.Runtime.CompilerServices.CallerMemberName] string properName = "")
{
if (object.Equals(properValue , newValue))
return;
properValue = newValue;
OnPropertyChanged(properName);
}
public void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string name="")
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this , new PropertyChangedEventArgs(name));
}
}
private StringBuilder _reminder;
}
复制使用MemberwiseClone
public object clone()
{
return this.MemberwiseClone();
}
前台两个Grid,一个显示原有的,一个显示复制的
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock Text="通讯录" HorizontalAlignment="Center"/>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock Text="id" Grid.Column="0" Grid.Row="0"/>
<TextBox Text="{x:Bind view.addressBook.id,Mode=TwoWay}" Grid.Column="1" Grid.Row="0"/>
<TextBlock Text="name" Grid.Column="0" Grid.Row="1"/>
<TextBox Text="{x:Bind view.addressBook.name,Mode=TwoWay}" Grid.Column="1" Grid.Row="1"/>
</Grid>
</Grid>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<!--<TextBlock Text="通讯录" HorizontalAlignment="Center"/>-->
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock Text="id" Grid.Column="0" Grid.Row="0"/>
<TextBox Text="{x:Bind view.clone.id,Mode=TwoWay}" Grid.Column="1" Grid.Row="0"/>
<TextBlock Text="name" Grid.Column="0" Grid.Row="1"/>
<TextBox Text="{x:Bind view.clone.name,Mode=TwoWay}" Grid.Column="1" Grid.Row="1"/>
</Grid>
</Grid>
<Button Grid.Column="2" Content="确定" Click="{x:Bind view.cloneaddress}"/>
</Grid>
viewModel
public caddressBook addressBook
{
set;
get;
}=new caddressBook();
public caddressBook clone
{
set;
get;
} = new caddressBook();
在ViewModel初始给addressBook id和name一个值
addressBook.id = "id"
addressBook.name = "name"
点击按钮复制clone值
public void cloneaddress()
{
//clone = addressBook.clone() as caddressBook
caddressBook temp = new caddressBook()
temp.id = "0"
temp.name = "clone"
clone.id = temp.id
clone.name = temp.name
}
直接复制clone会让引用没有指向复制的值
public void cloneaddress()
{
caddressBook temp = new caddressBook();
temp = addressBook.clone() as caddressBook;
clone.id = temp.id;
clone.name = temp.name;
}
可以复制
最笨的
public object Clone()
{
caddressBook addressbook = new caddressBook();
addressbook.id = id;
addressbook.name = name;
addressbook.contact = contact;
addressbook.address = address;
addressbook.city = city;
addressbook.comment = comment;
return addressbook;
}
public void cloneaddress()
{
caddressBook temp = new caddressBook();
temp = addressBook.Clone() as caddressBook;
clone.id = temp.id;
clone.name = temp.name;
}
可以复制
序列化XmlSerializer
public object clonejson()
{
string str = JsonConvert.SerializeObject(this);
return JsonConvert.DeserializeObject<caddressBook>(str);
}
public void cloneaddress()
{
caddressBook temp = new caddressBook();
temp = addressBook.clonejson() as caddressBook;
clone.id = temp.id;
clone.name = temp.name;
}
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
Win10 UWP 开发教程 课程 资源 80课时 课程地址:http://blog.csdn.net/shanguuncle/article/details/78111649
全选设置之后UWP即可访问localhost,可以走代理。
总结来说,"win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199 例子"提供了一个实际操作的平台,让开发者学习如何在UWP环境中利用MVVM模式进行开发。通过分析和实践这个框架,你将能够更好地理解MVVM的工作原理,以及如何...
下面我们将深入探讨如何在Win10下通过UWP实现这些功能。 首先,我们需要了解UWP(Universal Windows Platform)是微软为Windows 10推出的一种跨设备的应用程序开发框架。它允许开发者编写一次代码,就能在各种...
在Windows 10 UWP应用开发中,常常需要创建一种用户友好的交互方式,即当用户右键点击某个元素时,能在一个特定的位置显示一个浮出菜单(MenuFlyout)。本篇文章将详细介绍如何使用C#实现这样的功能,使得MenuFlyout...
在本文中,我们将探讨如何利用Windows 10的UWP(通用Windows平台)应用程序与ASP.NET Core构建一个图床服务器的客户端。这是一个涉及到跨平台开发和云端图像存储管理的项目,旨在提供一种高效且灵活的方式来上传和...
win10 moblie uwp qq5.6.1150.1000主程序,不含依赖程序
win10 moblie uwp 越飞阅读1.4.68.0主程序,不含依赖程序
title: "win10 uwp 字符文本转语音声音文件方法"在 UWP 中,支持将传入的字符串文本内容转换为音频语音,可以将这个语音声音通过 MediaEl
首先打开 使用微软的账号或 github 账号登陆点击 add new 添加一个 UWP 程序,需要写出 app 的
但是LTSB/C也没了应用商店和UWP运行环境.,LTSC自动恢复win10应用商店,应用商店也是Win10的一大特色! Win10的应用商店也有一些优秀的应用可以代替臃肿的桌面程序. 使用该工具即可在 Windows10 LTSC(2019,1809) 上...
但是LTSB/C也没了应用商店和UWP运行环境.,LTSC自动恢复win10应用商店,应用商店也是Win10的一大特色! Win10的应用商店也有一些优秀的应用可以代替臃肿的桌面程序. 使用该工具即可在 Windows10 LTSC(2019,1809) 上安装...
如果需要反过来,把同步转异步,可以使用 同步方法转异步写你的代码使用Task.Wait 时需要小心死锁不会出现死锁的代码使用Task.Delay等待即使使用方法
此安装包为win10的uwp版应用软件Sound Blaster Connect,有需要的朋友可以去下载下来
【描述】提到的"一个uwp开发源码,可以移植到一切win10系统"意味着该项目遵循了UWP的跨平台特性,使得开发者能够在不同类型的Windows 10设备上部署和运行同一套代码。UWP是微软为了统一Windows生态而推出的新开发...
win10应用商店安装包,Microsoft.WindowsStore_11804.1001.913.0_neutral_~_8wekyb3d8bbwe,可用于不带应用商店的安装
借助 Windows Explorer 上的这种现代 UWP,以更有效,更令人满意的方式管理文件 我们认为我们大多数人都可以同意 Windows 10 是迄今为止 Microsoft 操作系统的最佳版本,尽管它具有各种可感知的或多或少的主观缺点...
微软推出的开源UWP社区工具包(Windows Community Toolkit)是一个关键的资源,它旨在简化和加速开发流程,使得开发者能够更高效地利用Win10 SDK进行编程。 UWP社区工具包是一个集合了各种辅助工具、组件和示例代码...
标题"BleScan_连接_Windows编程_ble_win10ble开发_win10ble_"涉及的核心技术是Windows 10上的蓝牙低功耗(Bluetooth Low Energy, BLE)开发,具体包括BLE设备的扫描、连接以及属性查询。这个项目是在64位Windows 10...
Windows10 引入了通用 Windows 平台 (UWP),这进一步推动了 Windows 运行时模型的发展,并将该平台引入到 Windows 10 统一核心版 中。作为核心版的一部分,UWP 现提供了一个可供在每个运行 Windows 10 的设备上使用...