У меня есть два экземпляра прямоугольника, я хочу скопировать атрибуты одного в другой, но приведенный ниже код приводит к изменениям в копии, влияющим на оригинал.
Я считаю, что мне нужно выполнить глубокоекопия исходного прямоугольника, чтобы избежать такого поведения, но как я могу это сделать?
Приложение CF WPF.
using System.Windows;
using System.Windows.Media;
using System.Windows.Shapes;
namespace WpfApp1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
SpecialButton tmp = new SpecialButton();
tmp.Update();
}
public class SpecialButton
{
public Rectangle Original_Properties { get; set; }
public Rectangle Copy_Properties { get; set; }
public void Update()
{
Original_Properties = new Rectangle();
Copy_Properties = new Rectangle();
Original_Properties.StrokeThickness = 1;
Original_Properties.Stroke = Brushes.White;
Original_Properties.Width = 20;
Original_Properties.Height = 20;
Original_Properties.Tag = "exampleTag";
Copy_Properties = Original_Properties; // this needs to be a deep copy i think.
Copy_Properties.Width = Copy_Properties.Width / 2;
Copy_Properties.Height = Copy_Properties.Height / 2;
Copy_Properties.StrokeThickness = 2;
Copy_Properties.Tag = Original_Properties.Tag + "_selected" ;
}
}
}
}