<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Future Of DotNet</title>
    <link>https://kaki104.tistory.com/</link>
    <description>This blog covers the latest technologies in Microsoft .Net. In 2020, I will be talking about Uno Platform frequently.

http://youtube.com/FutureOfDotNet
https://twitter.com/kaki104</description>
    <language>ko</language>
    <pubDate>Tue, 10 Mar 2026 09:53:16 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>kaki104</managingEditor>
    <image>
      <title>Future Of DotNet</title>
      <url>https://tistory1.daumcdn.net/tistory/897921/attach/58d5221b157b431e8ace5d30cc0c7ee7</url>
      <link>https://kaki104.tistory.com</link>
    </image>
    <item>
      <title>ViewModel을 싱글톤으로 만들어서 계속 사용하기</title>
      <link>https://kaki104.tistory.com/900</link>
      <description>질문으로 올려주신 내용을 간단하게 예제로 만들었습니다.
&amp;nbsp;
처음 시작

다른 화면으로 이동 했다가 다시 돌아오기를 여러번 수행한 후에는 아래와 같은 결과가 나옵니다.

1. 뷰모델 싱글톤으로 등록
App.xaml.cs에서 아래와 같은 방법으로 컨테이너에 싱글톤으로 등록할 수 있습니다.
처음에 Resolve를 하면 하나의 인스턴스가 생성되고, 그 이후에는 계속 동일한 인스턴스를 반환 합니다.
        /// &amp;lt;summary&amp;gt;
  ..</description>
      <category>WPF  .NET</category>
      <category>MVVM</category>
      <category>singleton</category>
      <category>ViewModel</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/900</guid>
      <comments>https://kaki104.tistory.com/900#entry900comment</comments>
      <pubDate>Tue, 30 Jan 2024 10:00:26 +0900</pubDate>
    </item>
    <item>
      <title>CommunityToolkit.Mvvm - LayerPopup 빈 공간 클릭으로 닫기</title>
      <link>https://kaki104.tistory.com/899</link>
      <description>리플로 문의 주신 내용이 있어서 추가 작업을 진행했습니다.

빈공간이나 OK를 클릭하면 팝업이 닫히도록 수정했습니다.
1. MainViewModel.cs
이 작업의 핵심은 CloseLayerPopupCommand를 호출하고, 클릭한 위치가 빈공간인지 확인해서 빈공간일 때만 닫아주는 것입니다.

public&amp;nbsp;ICommand&amp;nbsp;CloseLayerPopupCommand&amp;nbsp;{&amp;nbsp;get;&amp;nbsp;set;&amp;nbsp;}

커맨드를 추..</description>
      <category>WPF  .NET</category>
      <category>layerpopup</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/899</guid>
      <comments>https://kaki104.tistory.com/899#entry899comment</comments>
      <pubDate>Mon, 29 Jan 2024 10:00:15 +0900</pubDate>
    </item>
    <item>
      <title>Sql Always Encrypted 사용하기 Part4</title>
      <link>https://kaki104.tistory.com/898</link>
      <description>2023.12.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part4
2023.12.20 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part3
2023.11.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part2
2023.11.20 - [Entity Framework Core] - Sql..</description>
      <category>Entity Framework Core</category>
      <category>akv</category>
      <category>Always Encrypted</category>
      <category>C#</category>
      <category>mssql</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/898</guid>
      <comments>https://kaki104.tistory.com/898#entry898comment</comments>
      <pubDate>Fri, 22 Dec 2023 10:00:52 +0900</pubDate>
    </item>
    <item>
      <title>Sql Always Encrypted 사용하기 Part3</title>
      <link>https://kaki104.tistory.com/897</link>
      <description>2023.12.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part4
2023.12.20 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part3
2023.11.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part2
2023.11.20 - [Entity Framework Core] - Sql..</description>
      <category>Entity Framework Core</category>
      <category>akv</category>
      <category>Always Encrypted</category>
      <category>Azure</category>
      <category>mssql</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/897</guid>
      <comments>https://kaki104.tistory.com/897#entry897comment</comments>
      <pubDate>Wed, 20 Dec 2023 10:00:06 +0900</pubDate>
    </item>
    <item>
      <title>Sql Always Encrypted 사용하기 Part2</title>
      <link>https://kaki104.tistory.com/896</link>
      <description>2023.12.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part4
2023.12.20 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part3
2023.11.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part2
2023.11.20 - [Entity Framework Core] - Sql..</description>
      <category>Entity Framework Core</category>
      <category>Always Encrypted</category>
      <category>azure key vault</category>
      <category>SQL</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/896</guid>
      <comments>https://kaki104.tistory.com/896#entry896comment</comments>
      <pubDate>Wed, 22 Nov 2023 10:00:42 +0900</pubDate>
    </item>
    <item>
      <title>Sql Always Encrypted 사용하기 Part1</title>
      <link>https://kaki104.tistory.com/895</link>
      <description>2023.12.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part4
2023.12.20 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part3
2023.11.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part2
2023.11.20 - [Entity Framework Core] - Sql..</description>
      <category>Entity Framework Core</category>
      <category>Always Encrypted</category>
      <category>ef</category>
      <category>EntityFramework</category>
      <category>SQL</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/895</guid>
      <comments>https://kaki104.tistory.com/895#entry895comment</comments>
      <pubDate>Mon, 20 Nov 2023 10:00:57 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part9</title>
      <link>https://kaki104.tistory.com/894</link>
      <description>마감 화면 작업 진행합니다.

1. 마감 화면 작업
Deadline.xaml
&amp;lt;UserControl
    x:Class=&quot;PrismKiosk.Views.Deadline&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas..</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/894</guid>
      <comments>https://kaki104.tistory.com/894#entry894comment</comments>
      <pubDate>Tue, 7 Nov 2023 10:00:56 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part8</title>
      <link>https://kaki104.tistory.com/893</link>
      <description>관리자 로그인 화면 작업 합니다.

하나의 윈도우에서 왼쪽이 고객이 메뉴를 선택하는 화면이고, 오른쪽이 기계 뒷쪽에 표시되는 관리자 로그인 화면입니다.
모니터의 해상도를 어떻게 처리하는 것인지는 정확하게 모르지만, 이렇게 사용한다고 하네요
1. 관리자 로그인 작업
ManagerLogin.xaml
&amp;lt;UserControl
    x:Class=&quot;PrismKiosk.Views.ManagerLogin&quot;
    xmlns=&quot;http://schemas.mic..</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/893</guid>
      <comments>https://kaki104.tistory.com/893#entry893comment</comments>
      <pubDate>Wed, 1 Nov 2023 10:00:59 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part7</title>
      <link>https://kaki104.tistory.com/892</link>
      <description>결제 화면 작업합니다.

1. 결재 화면 수정
Payment.xaml
&amp;lt;UserControl
    x:Class=&quot;PrismKiosk.Views.Payment&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:b=&quot;http://schemas.micr..</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/892</guid>
      <comments>https://kaki104.tistory.com/892#entry892comment</comments>
      <pubDate>Mon, 30 Oct 2023 10:00:42 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part6</title>
      <link>https://kaki104.tistory.com/891</link>
      <description>메뉴 화면에서 이전, 다음 버튼을 눌러서 상품 목록 페이징하는 작업, 동일 상품 선택시 주문 수량 추가, 금액 업데이트 방법 변경을 작업합니다.

1. 이전, 다음 상품 목록 출력
이전 버튼 커맨드와 다음 버튼 커맨드를 변경하고, 버튼 클릭시 이전, 다음 상품목록을 출력합니다.
SelectMenu.xaml
&amp;lt;Button
    Grid.Row=&quot;1&quot;
    Grid.Column=&quot;0&quot;
    Margin=&quot;10&quot;
    Padding=&quot;10&quot;
  ..</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/891</guid>
      <comments>https://kaki104.tistory.com/891#entry891comment</comments>
      <pubDate>Fri, 27 Oct 2023 10:00:30 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part5</title>
      <link>https://kaki104.tistory.com/890</link>
      <description>메뉴를 선택해서 주문 목록체 추가하는 부분을 작업합니다.

1. SelectMenu.xaml
&amp;lt;ItemsControl.ItemTemplate&amp;gt;
    &amp;lt;DataTemplate&amp;gt;
        &amp;lt;Grid Margin=&quot;10&quot;&amp;gt;
            &amp;lt;b:Interaction.Triggers&amp;gt;
                &amp;lt;b:EventTrigger EventName=&quot;MouseDown&quot;&amp;gt;
       ..</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/890</guid>
      <comments>https://kaki104.tistory.com/890#entry890comment</comments>
      <pubDate>Wed, 25 Oct 2023 10:00:51 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part4</title>
      <link>https://kaki104.tistory.com/889</link>
      <description>메뉴 선택 화면 작업을 시작합니다.

1. SelectMenu.xaml
&amp;lt;UserControl
    x:Class=&quot;PrismKiosk.Views.SelectMenu&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas...</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/889</guid>
      <comments>https://kaki104.tistory.com/889#entry889comment</comments>
      <pubDate>Mon, 23 Oct 2023 10:00:43 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part3</title>
      <link>https://kaki104.tistory.com/888</link>
      <description>주문시작 화면 만들기를 시작합니다.

1. 주문 시작 화면의 기능

매장이나 포장을 선택해서 메뉴 화면으로 이동합니다.
첫화면으로 이동할 수 있습니다.
장애인 UI로 전환할 수 있습니다.
30초가 지나면 처음화면으로 이동합니다.

&amp;nbsp;
2. AppContext.cs
키오스크의 현재 상태(주문이나 화면 위치등의 정보)를 보관하고, 사용합니다.
/// &amp;lt;summary&amp;gt;
/// AppContext - 애플리케이션에서 전체적으로 유지하는 데이..</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/888</guid>
      <comments>https://kaki104.tistory.com/888#entry888comment</comments>
      <pubDate>Fri, 20 Oct 2023 10:00:50 +0900</pubDate>
    </item>
    <item>
      <title>Prism - ContentControl에 화면 생성해서 넣기 1/2</title>
      <link>https://kaki104.tistory.com/887</link>
      <description>ContentControl의 Content에는 View를 생성해서 넣을 수 있습니다.
다만, ViewModel에서 View를 생성해서 바인딩하는 방식을 사용하지는 않습니다.
이렇게되면, View가 ViewModel에 종속된 모양이되어서 메모리 누수가 발생할 수 있기 때문입니다.
2가지 방법이 있는데 여기서는 Behavior를 이용하는 방법에 대해서 알아 보도록 하겠습니다.
이 셈플은 PrismStep7 프로젝트에 추가로 작업되었습니다.

1. Conte..</description>
      <category>WPF  .NET</category>
      <category>Behavior</category>
      <category>contentcontrol</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/887</guid>
      <comments>https://kaki104.tistory.com/887#entry887comment</comments>
      <pubDate>Thu, 19 Oct 2023 10:00:49 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part2</title>
      <link>https://kaki104.tistory.com/886</link>
      <description>Intro 화면 작업을 진행합니다.

1. Intro 화면의 기능

동영상 무한 반복 재생
클릭시 주문 시작 화면으로 이동

동영상 재생은 MediaElement 컨트롤을 이용합니다. 이 컨트롤에 대한 자세한 사항은 여기를 참고합니다.
동영상은 Microsoft sample 동영상을 사용했습니다.
&amp;nbsp;
KioskIntro.xaml
&amp;lt;MediaElement
    x:Name=&quot;IntroVideo&quot;
    Margin=&quot;5&quot;
    Verti..</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/886</guid>
      <comments>https://kaki104.tistory.com/886#entry886comment</comments>
      <pubDate>Wed, 18 Oct 2023 10:00:07 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part1</title>
      <link>https://kaki104.tistory.com/885</link>
      <description>1. 메인 화면 구성
아래 이미지와 같이 1개의 Window를 2개의 영역으로 분할해서 사용 합니다.
Kiosk 개발을 할 때 대부분 이렇게 1개의 윈도우에 화면을 분할해서 왼쪽 영역은 고객이 사용하고, 오른쪽 영역은 관리자가 사용 한다고 합니다.
&amp;nbsp;
최종 실행 화면

MainWindow.xaml
&amp;lt;Window
    x:Class=&quot;PrismKiosk.Views.MainWindow&quot;
    xmlns=&quot;http://schemas.micr..</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/885</guid>
      <comments>https://kaki104.tistory.com/885#entry885comment</comments>
      <pubDate>Mon, 16 Oct 2023 10:00:03 +0900</pubDate>
    </item>
    <item>
      <title>Kiosk 만들기 - Part0</title>
      <link>https://kaki104.tistory.com/884</link>
      <description>0. 참고 포스트들
2022.12.06 - [WPF .NET] - Prism Library를 사용하는 개발자를 위한 안내 Part7 - Create RegionAdapter
2022.11.30 - [WPF .NET] - Prism Library를 사용하는 개발자를 위한 안내 Part6 - TabControl Region Navigation
2022.11.25 - [WPF .NET] - Prism Library를 사용하는 개발자를 위한 안내 Part5 -..</description>
      <category>WPF  .NET</category>
      <category>kiosk</category>
      <category>PRISM</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/884</guid>
      <comments>https://kaki104.tistory.com/884#entry884comment</comments>
      <pubDate>Fri, 13 Oct 2023 10:00:15 +0900</pubDate>
    </item>
    <item>
      <title>CommunityToolkit.Mvvm Login 페이지 추가하고 사용</title>
      <link>https://kaki104.tistory.com/883</link>
      <description>로그인 페이지를 이용해서 로그인하고 메인 페이지로 넘어가는 방법을 심플 프레임워크에 적용했습니다.
문의 주신 멀루님 감사합니다. 오픈 일정이 있어서 너무 늦게 봤습니다.
&amp;nbsp;
자세한 설명은 생략하고 핵심 내용만 살펴 보도록 하겠습니다.
1. AppContext.cs
애플리케이션 전체에서 사용하는 데이터들을 모아 놓는 곳이라고 보시면 됩니다.
여기에 로그인 사용자 정보를 넣어두고 관리합니다.
/// &amp;lt;summary&amp;gt;
/// 애플리케이션 ..</description>
      <category>WPF  .NET</category>
      <category>framework</category>
      <category>MVVM</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/883</guid>
      <comments>https://kaki104.tistory.com/883#entry883comment</comments>
      <pubDate>Mon, 24 Jul 2023 11:16:07 +0900</pubDate>
    </item>
    <item>
      <title>Url 유효성 체크</title>
      <link>https://kaki104.tistory.com/881</link>
      <description>여러 이미지의 url을 이용해서 Image 컨트롤에 출력하는 화면을 개발했습니다.
그런데, url이 유효하지 않은 녀석들이 있더군요

이미지의 url 유효성 검사를 하는 방법에 대해서 찾아보다가, 비교적 쉬운 방법이 있어서 적용을 해보았습니다.
1. Url 존재 여부 확인
_httpClient는 생성자에서 생성했습니다.
전체 소스는 Github를 참고하시면 됩니다.
/// &amp;lt;summary&amp;gt;
/// Url 존재 여부 확인
/// &amp;lt;/sum..</description>
      <category>WPF  .NET</category>
      <category>url check</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/881</guid>
      <comments>https://kaki104.tistory.com/881#entry881comment</comments>
      <pubDate>Mon, 22 May 2023 10:00:21 +0900</pubDate>
    </item>
    <item>
      <title>Visual Studio에서 다중 레파지토리 사용하기</title>
      <link>https://kaki104.tistory.com/880</link>
      <description>솔루션 2개를 이용해서 개발을 진행 중인데, 첫번째 솔루션은 Framework이고, 다른 솔루션은 Framework를 nuget으로 만들어서 배포하고, nuget package를 사용하는 응용 프로그램 개발 솔루션입니다. 모든 프로젝트를 nuget으로 만들면 좋겠지만, 일부만 만들고 나머지는 프로젝트로 존재합니다.
&amp;nbsp;
각 솔루션을 이용해서 개발을 진행하다 보니, Framework 솔루션과 응용 프로그램 솔루션의 소스가 서로 약간씩 달라지면서 생..</description>
      <category>WPF  .NET</category>
      <category>repository</category>
      <category>WPF</category>
      <author>kaki104</author>
      <guid isPermaLink="true">https://kaki104.tistory.com/880</guid>
      <comments>https://kaki104.tistory.com/880#entry880comment</comments>
      <pubDate>Wed, 10 May 2023 10:00:12 +0900</pubDate>
    </item>
  </channel>
</rss>