<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>동동이의 블러그</title>
    <link>https://hackss.tistory.com/</link>
    <description>바나플에서 근무하는 윈도우폰7, 아이폰, 실버라이트, WCF, WEB, PowerShell 개발자 입니다.
도움이 되셨다면 따뜻한 글 하나 부탁 드립니다^^</description>
    <language>ko</language>
    <pubDate>Mon, 13 Apr 2026 11:22:00 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>동동(이재동)</managingEditor>
    <image>
      <title>동동이의 블러그</title>
      <url>https://t1.daumcdn.net/cfile/tistory/1876214E4EAA3DB72C</url>
      <link>https://hackss.tistory.com</link>
    </image>
    <item>
      <title>터치 스크롤 뷰어 List</title>
      <link>https://hackss.tistory.com/entry/%ED%84%B0%EC%B9%98-%EC%8A%A4%ED%81%AC%EB%A1%A4-%EB%B7%B0%EC%96%B4-List</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ListView안의 List에서는 터치가 안먹는다. 이떄는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;ListView&amp;nbsp;ItemsSource=&quot;{Binding&amp;nbsp;ElementName=xMainPage&amp;nbsp;,&amp;nbsp;Path=DataContext.AllMenuFlipData}&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ListView.Template&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ControlTemplate&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;StackPanel&amp;nbsp;IsItemsHost=&quot;True&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ControlTemplate&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ListView.Template&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 Template안의 Panel에서 IsItemHost 를 True로 바꿔주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT에선&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IsItemsHost&lt;/b&gt; 속성은 주로 **Panel**에서 사용되며, 이 속성이 **true**로 설정된 경우 해당 패널이 &lt;b&gt;항목을 호스트&lt;/b&gt;하는 역할을 한다는 것을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 할경우 list에서 스크롤할떄 전체로 스크롤 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키오스크 개발할떄 필수인거 같다.!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>wpf</category>
      <category>isitemshost</category>
      <category>WPF</category>
      <category>키오스크</category>
      <category>터치</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1015</guid>
      <comments>https://hackss.tistory.com/entry/%ED%84%B0%EC%B9%98-%EC%8A%A4%ED%81%AC%EB%A1%A4-%EB%B7%B0%EC%96%B4-List#entry1015comment</comments>
      <pubDate>Mon, 17 Mar 2025 16:49:33 +0900</pubDate>
    </item>
    <item>
      <title>listbox에서 터치스크롤시 화면 전체가 움직일떄</title>
      <link>https://hackss.tistory.com/entry/listbox%EC%97%90%EC%84%9C-%ED%84%B0%EC%B9%98%EC%8A%A4%ED%81%AC%EB%A1%A4%EC%8B%9C-%ED%99%94%EB%A9%B4-%EC%A0%84%EC%B2%B4%EA%B0%80-%EC%9B%80%EC%A7%81%EC%9D%BC%EB%96%84</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;listbox에 ManipulationBoundaryFeedback 이벤트를 설정하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;behind에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;e.Handled&amp;nbsp;=&amp;nbsp;true;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 한다.&lt;/p&gt;</description>
      <category>wpf</category>
      <category>listbox</category>
      <category>전체</category>
      <category>터치</category>
      <category>화면</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1014</guid>
      <comments>https://hackss.tistory.com/entry/listbox%EC%97%90%EC%84%9C-%ED%84%B0%EC%B9%98%EC%8A%A4%ED%81%AC%EB%A1%A4%EC%8B%9C-%ED%99%94%EB%A9%B4-%EC%A0%84%EC%B2%B4%EA%B0%80-%EC%9B%80%EC%A7%81%EC%9D%BC%EB%96%84#entry1014comment</comments>
      <pubDate>Tue, 7 Jan 2025 11:35:33 +0900</pubDate>
    </item>
    <item>
      <title>같은 파일 창 2개 만들고 열어서 분할</title>
      <link>https://hackss.tistory.com/entry/%EA%B0%99%EC%9D%80-%ED%8C%8C%EC%9D%BC-%EC%B0%BD-2%EA%B0%9C-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%97%B4%EC%96%B4%EC%84%9C-%EB%B6%84%ED%95%A0</link>
      <description>&lt;p style=&quot;background-color: #17191a; color: #beb9b3; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;1. Shift + Alt + W, N&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #17191a; color: #beb9b3; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;: 동일한 파일의 창을 하나 더 연다&lt;/p&gt;
&lt;p style=&quot;background-color: #17191a; color: #beb9b3; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #17191a; color: #beb9b3; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;2. Shift + Alt + W, V&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #17191a; color: #beb9b3; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;: 연 창을 오른쪽에 배치시킨다.&lt;/p&gt;</description>
      <category>VisualStudio</category>
      <category>같은파일</category>
      <category>분할</category>
      <category>비쥬얼스튜디오</category>
      <category>창2개</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1013</guid>
      <comments>https://hackss.tistory.com/entry/%EA%B0%99%EC%9D%80-%ED%8C%8C%EC%9D%BC-%EC%B0%BD-2%EA%B0%9C-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%97%B4%EC%96%B4%EC%84%9C-%EB%B6%84%ED%95%A0#entry1013comment</comments>
      <pubDate>Fri, 23 Feb 2024 16:31:43 +0900</pubDate>
    </item>
    <item>
      <title>[WPF] 체크박스 xName을 이용하여 반복작업 하지 않고 간결하게</title>
      <link>https://hackss.tistory.com/entry/WPF-%EC%B2%B4%ED%81%AC%EB%B0%95%EC%8A%A4-xName%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%B0%98%EB%B3%B5%EC%9E%91%EC%97%85-%ED%95%98%EC%A7%80-%EC%95%8A%EA%B3%A0-%EA%B0%84%EA%B2%B0%ED%95%98%EA%B2%8C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;private&amp;nbsp;void&amp;nbsp;MessageCheck_Checked(object&amp;nbsp;sender,&amp;nbsp;RoutedEventArgs&amp;nbsp;e) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(IsLoaded&amp;nbsp;==&amp;nbsp;false) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;name&amp;nbsp;=&amp;nbsp;(sender&amp;nbsp;as&amp;nbsp;ToggleButton).Name; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;ctl&amp;nbsp;=&amp;nbsp;xGroups.FindName(name)&amp;nbsp;as&amp;nbsp;ToggleButton; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataManager.LocalData.MessageSelect.GetType().GetProperty(name.Remove(0,&amp;nbsp;1)).SetValue(DataManager.LocalData.MessageSelect,&amp;nbsp;ctl.IsChecked); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataManager.Instance.SaveData(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;void&amp;nbsp;TelegramMessageSelectPage_IsVisibleChanged(object&amp;nbsp;sender,&amp;nbsp;DependencyPropertyChangedEventArgs&amp;nbsp;e) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((e.NewValue)&amp;nbsp;as&amp;nbsp;bool?&amp;nbsp;==&amp;nbsp;false) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;(var&amp;nbsp;item&amp;nbsp;in&amp;nbsp;DataManager.LocalData.MessageSelect.GetType().GetProperties()) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;ctl&amp;nbsp;=&amp;nbsp;xGroups.FindName($&quot;x{item.Name}&quot;)&amp;nbsp;as&amp;nbsp;ToggleButton; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(ctl&amp;nbsp;!=&amp;nbsp;null) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ctl.IsChecked&amp;nbsp;=&amp;nbsp;(bool)item.GetValue(DataManager.LocalData.MessageSelect); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;public&amp;nbsp;class&amp;nbsp;MessageSelectModel &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;bool&amp;nbsp;IsDeepSleep&amp;nbsp;{&amp;nbsp;get;&amp;nbsp;set;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;bool&amp;nbsp;IsStartEndMap&amp;nbsp;{&amp;nbsp;get;&amp;nbsp;set;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;bool&amp;nbsp;IsDriveEnd&amp;nbsp;{&amp;nbsp;get;&amp;nbsp;set;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 바인딩하는게 최고지만 피지 못할경우에는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;xIsAutoAfterBlowBtn.IsChecked = DataManager.LocalData.IsAutoAfterBlow; &amp;lt;-이런식으로 노가다 작업하지말고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;xName이랑 프로퍼티랑 이름을 같게해서 반복작업을 줄여보자&lt;/p&gt;</description>
      <category>wpf</category>
      <category>WPF</category>
      <category>간결</category>
      <category>반복작업</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1012</guid>
      <comments>https://hackss.tistory.com/entry/WPF-%EC%B2%B4%ED%81%AC%EB%B0%95%EC%8A%A4-xName%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%B0%98%EB%B3%B5%EC%9E%91%EC%97%85-%ED%95%98%EC%A7%80-%EC%95%8A%EA%B3%A0-%EA%B0%84%EA%B2%B0%ED%95%98%EA%B2%8C#entry1012comment</comments>
      <pubDate>Fri, 9 Jun 2023 18:37:36 +0900</pubDate>
    </item>
    <item>
      <title>MEF란?</title>
      <link>https://hackss.tistory.com/entry/MEF%EB%9E%80</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.powerumc.kr/189&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.powerumc.kr/189&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686203412863&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[MEF] 1. Managed Extensibility Framework 이란?&quot; data-og-description=&quot;MEF (Managed Extensibility Framework) 란? Menaged Extension Framewkr(이하 MEF) 란? 가장 쉽게 얘기하자면, 어플리케이션과 컴포넌트의 재사용성을 높일 수 있는 프레임워크입니다. 기존의 어플리케이션은 하나&quot; data-og-host=&quot;blog.powerumc.kr&quot; data-og-source-url=&quot;https://blog.powerumc.kr/189&quot; data-og-url=&quot;https://blog.powerumc.kr/189&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Cz2KT/hySVMtHoAn/YnDRglr2wnVbXkFsWNSPRK/img.jpg?width=214&amp;amp;height=259&amp;amp;face=0_0_214_259,https://scrap.kakaocdn.net/dn/q2Po8/hySWqwxbwM/KoT7pPiavIPvvZ9hOkcKv1/img.jpg?width=214&amp;amp;height=259&amp;amp;face=0_0_214_259,https://scrap.kakaocdn.net/dn/F7I8f/hySWpRVPUx/xoOP4okvrcLtK4ZrZNLcrk/img.jpg?width=319&amp;amp;height=239&amp;amp;face=0_0_319_239&quot;&gt;&lt;a href=&quot;https://blog.powerumc.kr/189&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.powerumc.kr/189&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Cz2KT/hySVMtHoAn/YnDRglr2wnVbXkFsWNSPRK/img.jpg?width=214&amp;amp;height=259&amp;amp;face=0_0_214_259,https://scrap.kakaocdn.net/dn/q2Po8/hySWqwxbwM/KoT7pPiavIPvvZ9hOkcKv1/img.jpg?width=214&amp;amp;height=259&amp;amp;face=0_0_214_259,https://scrap.kakaocdn.net/dn/F7I8f/hySWpRVPUx/xoOP4okvrcLtK4ZrZNLcrk/img.jpg?width=319&amp;amp;height=239&amp;amp;face=0_0_319_239');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[MEF] 1. Managed Extensibility Framework 이란?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;MEF (Managed Extensibility Framework) 란? Menaged Extension Framewkr(이하 MEF) 란? 가장 쉽게 얘기하자면, 어플리케이션과 컴포넌트의 재사용성을 높일 수 있는 프레임워크입니다. 기존의 어플리케이션은 하나&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.powerumc.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 잘정리 되어 있으니 보자..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #17191a; color: #a0988e; text-align: start;&quot;&gt;Menaged Extension Framewkr(이하 MEF) 란? 가장 쉽게 얘기하자면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #c00000;&quot; data-darkreader-inline-color=&quot;&quot;&gt;어플리케이션과 컴포넌트의 재사용성을 높일 수 있는 프레임워크입니다.&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #17191a; color: #a0988e; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;기존의 어플리케이션은 하나의 목적을 하나의 어플리케이션으로 구현한 정적인(Statically) 어플리케이션이라면, MEF 는 보다 동적인(Dynamically) 어플리케이션을 구축할 수 있는 새로운 라이브러리를 제공합니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>wpf</category>
      <category>MEF</category>
      <category>WPF</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1011</guid>
      <comments>https://hackss.tistory.com/entry/MEF%EB%9E%80#entry1011comment</comments>
      <pubDate>Thu, 8 Jun 2023 14:50:41 +0900</pubDate>
    </item>
    <item>
      <title>[WPF] gRPC Client 빌드 안될때 대처법</title>
      <link>https://hackss.tistory.com/entry/WPF-gRPC-Client-%EB%B9%8C%EB%93%9C-%EC%95%88%EB%90%A0%EB%95%8C-%EB%8C%80%EC%B2%98%EB%B2%95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;서버야 프로젝트 템플릿이 있어서 그냥 자동으로 만들어지지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WPF client에서 Protos에 greet.proto를 복사하고 따라했지만 빌드에러가 났다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글 검색후 해결했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/60810497/grpc-erros-in-wpf-net-core&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/60810497/grpc-erros-in-wpf-net-core&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686119016419&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;gRPC erros in WPF .NET Core&quot; data-og-description=&quot;I want to create a simple WPF Core, gRPC project. This &amp;quot;code&amp;quot; works perfectly in my .NET Core Console app, however WPF seems to be something special. Proto File syntax = &amp;quot;proto3&amp;quot;...&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/60810497/grpc-erros-in-wpf-net-core&quot; data-og-url=&quot;https://stackoverflow.com/questions/60810497/grpc-erros-in-wpf-net-core&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yucct/hySTSBCXBu/skHM3utCRPWErRuuZPHokk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/60810497/grpc-erros-in-wpf-net-core&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/60810497/grpc-erros-in-wpf-net-core&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yucct/hySTSBCXBu/skHM3utCRPWErRuuZPHokk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;gRPC erros in WPF .NET Core&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I want to create a simple WPF Core, gRPC project. This &quot;code&quot; works perfectly in my .NET Core Console app, however WPF seems to be something special. Proto File syntax = &quot;proto3&quot;...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;Project&amp;nbsp;Sdk=&quot;Microsoft.NET.Sdk&quot;&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;PropertyGroup&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;OutputType&amp;gt;WinExe&amp;lt;/OutputType&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;TargetFramework&amp;gt;net6.0-windows&amp;lt;/TargetFramework&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Nullable&amp;gt;enable&amp;lt;/Nullable&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;UseWPF&amp;gt;true&amp;lt;/UseWPF&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;CoreCompileDependsOn&amp;gt;$(CoreCompileDependsOn);Protobuf_Compile&amp;lt;/CoreCompileDependsOn&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/PropertyGroup&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;ItemGroup&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;PackageReference&amp;nbsp;Include=&quot;Google.Protobuf&quot;&amp;nbsp;Version=&quot;3.23.2&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;PackageReference&amp;nbsp;Include=&quot;Grpc.Net.Client&quot;&amp;nbsp;Version=&quot;2.53.0&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;PackageReference&amp;nbsp;Include=&quot;Grpc.Tools&quot;&amp;nbsp;Version=&quot;2.54.0&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;PrivateAssets&amp;gt;all&amp;lt;/PrivateAssets&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;IncludeAssets&amp;gt;runtime;&amp;nbsp;build;&amp;nbsp;native;&amp;nbsp;contentfiles;&amp;nbsp;analyzers;&amp;nbsp;buildtransitive&amp;lt;/IncludeAssets&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/PackageReference&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Protobuf&amp;nbsp;Include=&quot;Protos\greet.proto&quot;&amp;nbsp;GrpcServices=&quot;Client&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/ItemGroup&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;lt;/Project&amp;gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 편집에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;CoreCompileDependsOn&amp;gt;$(CoreCompileDependsOn);Protobuf_Compile&amp;lt;/CoreCompileDependsOn&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 추가함으로써 빌드가 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>wpf</category>
      <category>client</category>
      <category>grpc</category>
      <category>WPF</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1010</guid>
      <comments>https://hackss.tistory.com/entry/WPF-gRPC-Client-%EB%B9%8C%EB%93%9C-%EC%95%88%EB%90%A0%EB%95%8C-%EB%8C%80%EC%B2%98%EB%B2%95#entry1010comment</comments>
      <pubDate>Wed, 7 Jun 2023 15:25:00 +0900</pubDate>
    </item>
    <item>
      <title>dynamic property 에서 Set을 할떄</title>
      <link>https://hackss.tistory.com/entry/dynamic-property-%EC%97%90%EC%84%9C-Set%EC%9D%84-%ED%95%A0%EB%96%84</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;await&amp;nbsp;SendConfirmMsg(msgSplit,&amp;nbsp;DataManager.LocalData.LongTrendBuy,&amp;nbsp;&quot;QuitRange&quot;);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;private&amp;nbsp;static&amp;nbsp;async&amp;nbsp;Task&amp;nbsp;SendConfirmMsg(string[]&amp;nbsp;msgSplit,&amp;nbsp;dynamic&amp;nbsp;data,&amp;nbsp;string&amp;nbsp;prop) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;double&amp;nbsp;numValue; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool&amp;nbsp;isNum&amp;nbsp;=&amp;nbsp;double.TryParse(msgSplit[2],&amp;nbsp;out&amp;nbsp;numValue); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.GetType().GetProperty(prop).SetValue(data,&amp;nbsp;numValue,&amp;nbsp;null);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataManager.Instance.SaveData(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;await&amp;nbsp;TelegramPushService.SendMessage($&quot;{msgSplit[0]}&amp;nbsp;{msgSplit[1]}&amp;nbsp;{numValue}&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 반복되는 구문을 dynamic을 이용해서 짧게 만들수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;data.GetType().GetProperty(prop).SetValue(data,&amp;nbsp;numValue,&amp;nbsp;null);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/12970353/c-sharp-dynamically-set-property&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/12970353/c-sharp-dynamically-set-property&lt;/a&gt;&lt;/p&gt;</description>
      <category>wpf</category>
      <category>c#</category>
      <category>Dynamic</category>
      <category>property</category>
      <category>WPF</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1009</guid>
      <comments>https://hackss.tistory.com/entry/dynamic-property-%EC%97%90%EC%84%9C-Set%EC%9D%84-%ED%95%A0%EB%96%84#entry1009comment</comments>
      <pubDate>Mon, 5 Dec 2022 11:44:17 +0900</pubDate>
    </item>
    <item>
      <title>public (string name, int age) GetUser()</title>
      <link>https://hackss.tistory.com/entry/public-string-name-int-age-GetUser</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Tuple 대신에 이렇게 사용할수도 있다 엄청 편리할듯&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;public&amp;nbsp;(string&amp;nbsp;name,&amp;nbsp;int&amp;nbsp;age)&amp;nbsp;GetUser() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;(&quot;이름&quot;,&amp;nbsp;30); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;</description>
      <category>wpf</category>
      <category>c#</category>
      <category>tuple</category>
      <category>반환</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1008</guid>
      <comments>https://hackss.tistory.com/entry/public-string-name-int-age-GetUser#entry1008comment</comments>
      <pubDate>Wed, 26 Oct 2022 15:34:09 +0900</pubDate>
    </item>
    <item>
      <title>PeriodicTimer</title>
      <link>https://hackss.tistory.com/entry/PeriodicTimer</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;PeriodicTimer는 비동기 방식으로 타이머 틱을 처리하는 최신 타이머 API 입니다. 다음처럼 사용할 수 있고요,&lt;/p&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;var timer = new PeriodicTimer(TimeSpan.FromSeconds(1));

while (await timer.WaitForNextTickAsync())
{
    Console.WriteLine(DateTime.Now);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1초 간격으로 실행되는 결과를 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 실행 결과&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2021-11-18 오후 11:14:17
2021-11-18 오후 11:14:18
2021-11-18 오후 11:14:19
2021-11-18 오후 11:14:20
2021-11-18 오후 11:14:21
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼핏 보면&lt;span&gt;&amp;nbsp;&lt;/span&gt;Task.Delay()의 기능과 별반 차이가 없어 보이죠? 차이가 있습니다. 다음의 코드를 보시죠.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;var timer = new PeriodicTimer(TimeSpan.FromSeconds(2));

while (await timer.WaitForNextTickAsync())
{
    Console.WriteLine($&quot;Wake Up!: {DateTime.Now}&quot;);

    // 1500 ms 소요되는 처리가 발생했다고 가정
    Thread.Sleep(1500);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 실행 결과&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Wake Up!: 2021-11-18 오후 11:18:56
Wake Up!: 2021-11-18 오후 11:18:58
Wake Up!: 2021-11-18 오후 11:19:00
Wake Up!: 2021-11-18 오후 11:19:02
Wake Up!: 2021-11-18 오후 11:19:04
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강제로 1500 ms 만큼의 딜레이를 줬음에도 불구하고 지정한&lt;span&gt;&amp;nbsp;&lt;/span&gt;period&lt;span&gt;&amp;nbsp;&lt;/span&gt;만큼의 타이머 틱을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타이머 동작 중 취소하는 기능이 있을까요?&lt;span&gt;&amp;nbsp;&lt;/span&gt;WaitForNextTickAsync(cancellationToken)를 통해 취소도 가능합니다. 하지만 좀 더 쉽게 취소하는 방법은&lt;span&gt;&amp;nbsp;&lt;/span&gt;timer를&lt;span&gt;&amp;nbsp;&lt;/span&gt;Dispose하는 것입니다.&lt;/p&gt;</description>
      <category>wpf</category>
      <category>periodic</category>
      <category>timer</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1007</guid>
      <comments>https://hackss.tistory.com/entry/PeriodicTimer#entry1007comment</comments>
      <pubDate>Wed, 31 Aug 2022 16:03:43 +0900</pubDate>
    </item>
    <item>
      <title>2개의 LIST 비교 하는것</title>
      <link>https://hackss.tistory.com/entry/2%EA%B0%9C%EC%9D%98-LIST-%EB%B9%84%EA%B5%90-%ED%95%98%EB%8A%94%EA%B2%83</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;private&amp;nbsp;bool&amp;nbsp;IsDiffList&amp;lt;T&amp;gt;(List&amp;lt;T&amp;gt;&amp;nbsp;list1,&amp;nbsp;List&amp;lt;T&amp;gt;&amp;nbsp;list2) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;diff1&amp;nbsp;=&amp;nbsp;list1.Except(list2); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;diff2&amp;nbsp;=&amp;nbsp;list2.Except(list1); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;resultDiff&amp;nbsp;=&amp;nbsp;diff1.Concat(diff2).ToList(); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(resultDiff.Count&amp;nbsp;&amp;gt;&amp;nbsp;0) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;true; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;if&amp;nbsp;(IsDiffList&amp;lt;OrderInfo&amp;gt;((xProfitOrderListbox.ItemsSource&amp;nbsp;as&amp;nbsp;List&amp;lt;OrderInfo&amp;gt;).ToList(),&amp;nbsp;_service.OrderInfoList)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xProfitOrderListbox.ItemsSource&amp;nbsp;=&amp;nbsp;_service.OrderInfoList; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xProfitOrderListbox.Items.Refresh(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 반복적으로 item을 넣어야 하는곳에 넣어준다. timer를 이용하면 객체를 계속 생성하기때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무조건 넣어주면 메모리 Leak 이 걸린다. 그렇기 떄문에 변경될때만 적용되게 해야한다.&lt;/p&gt;</description>
      <category>wpf</category>
      <category>c#</category>
      <category>diff</category>
      <category>list</category>
      <category>WPF</category>
      <category>비교</category>
      <author>동동(이재동)</author>
      <guid isPermaLink="true">https://hackss.tistory.com/1004</guid>
      <comments>https://hackss.tistory.com/entry/2%EA%B0%9C%EC%9D%98-LIST-%EB%B9%84%EA%B5%90-%ED%95%98%EB%8A%94%EA%B2%83#entry1004comment</comments>
      <pubDate>Thu, 18 Nov 2021 18:01:31 +0900</pubDate>
    </item>
  </channel>
</rss>