Blog | Tag | Local | Guest | Login | Write |  RSS
WPF UIElement Clone

안녕하세요. 이번시간에는 기존의 WinForm에서 사용하던 Clone메서드를 WPF에서는 어떻게 사용하는지에 대해 알아보도록 하겠습니다. WPF에서는 특별하게 Clone 메서드를 제공하고 있지 않기때문에 Clone 메서드를 직접 구현 해야 합니다. 프로젝트를 하다가 생각나서 구현해놨던건데 알려드리면 유용할것 같아 포스팅합니다..
 
저같은 경우는 방법이야 여러가지가 있겠지만, 저같은 경우는 간단하게 UIElement객체를 XAML로 Export하고 다시 해당 객체를 Import하는 방식으로 사용합니다. 생각보다 부하가 심할 수 도 있는 부분이긴하나, 간단하게 한두번 정도 사용하기에는 큰 무리는 없을 것으로 보입니다.

아래는 제가 사용하는 CloneElement 메서드 소스코드입니다.

  1. public static UIElement CloneElement(UIElement Source)   
  2. {   
  3.   
  4.     if (Source == nullreturn null;   
  5.   
  6.     string XAML = System.Windows.Markup.XamlWriter.Save(Source);   
  7.   
  8.     System.IO.StringReader StringReader = new System.IO.StringReader(XAML);   
  9.     System.Xml.XmlReader xmlReader = System.Xml.XmlTextReader.Create(StringReader);   
  10.   
  11.     return (UIElement)System.Windows.Markup.XamlReader.Load(xmlReader);   
  12.   
  13. }  
사용은 아래와 같이 사용하시면 됩니다.
  1. Button OriginalButton = new Button();   
  2. Button CloneButton = CloneElement(OriginalButton) as Button;