첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
다운로드

▶ MainWindow.xaml

<Window x:Class="TestProject.Views.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:prism="http://prismlibrary.com/"
    prism:ViewModelLocator.AutoWireViewModel="True"
    Width="800"
    Height="600"
    Title="{Binding Title}"
    FontFamily="나눔고딕코딩"
    FontSize="16">
    <i:Interaction.Triggers>
        <prism:InteractionRequestTrigger SourceObject="{Binding NotificationRequest}">
            <prism:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True" />
        </prism:InteractionRequestTrigger>
        <prism:InteractionRequestTrigger SourceObject="{Binding ConfirmationRequest}">
            <prism:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True" />
        </prism:InteractionRequestTrigger>
    </i:Interaction.Triggers>
    <StackPanel>
        <Button
            Margin="10"
            Padding="5"
            Content="Raise Default Notification"
            Command="{Binding NotificationCommand}" />
        <Button
            Margin="10"
            Padding="5"
            Content="Raise Default Confirmation"
            Command="{Binding ConfirmationCommand}" />
        <TextBlock
            HorizontalAlignment="Center"
            Margin="25"
            FontSize="24"
            Text="{Binding Message}" />
    </StackPanel>
</Window>

 

728x90

 

▶ MainWindow.xaml.cs

using System.Windows;

namespace TestProject.Views
{
    /// <summary>
    /// 메인 윈도우
    /// </summary>
    public partial class MainWindow : Window
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainWindow()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();
        }

        #endregion
    }
}

 

300x250

 

▶ MainWindowViewModel.cs

using Prism.Commands;
using Prism.Interactivity.InteractionRequest;
using Prism.Mvvm;

namespace TestProject.ViewModels
{
    /// <summary>
    /// 메인 윈도우 뷰 모델
    /// </summary>
    public class MainWindowViewModel : BindableBase
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// 제목
        /// </summary>
        private string title = "InteractionRequest<T> 클래스 : 확인 대화 상자 표시하기";

        /// <summary>
        /// 메시지
        /// </summary>
        private string message = "";

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 제목 - Title

        /// <summary>
        /// 제목
        /// </summary>
        public string Title
        {
            get
            {
                return this.title;
            }
            set
            {
                SetProperty(ref this.title, value);
            }
        }

        #endregion
        #region 메시지 - Message

        /// <summary>
        /// 메시지
        /// </summary>
        public string Message
        {
            get
            {
                return this.message;
            }
            set
            {
                SetProperty(ref this.message, value);
            }
        }

        #endregion
        #region 통지 요청 - NotificationRequest

        /// <summary>
        /// 통지 요청
        /// </summary>
        public InteractionRequest<INotification> NotificationRequest { get; set; }

        #endregion
        #region 통지 명령 - NotificationCommand

        /// <summary>
        /// 통지 명령
        /// </summary>
        public DelegateCommand NotificationCommand { get; set; }

        #endregion
        #region 확인 요청 - ConfirmationRequest

        /// <summary>
        /// 확인 요청
        /// </summary>
        public InteractionRequest<IConfirmation> ConfirmationRequest { get; set; }

        #endregion
        #region 확인 명령 - ConfirmationCommand

        /// <summary>
        /// 확인 명령
        /// </summary>
        public DelegateCommand ConfirmationCommand { get; set; }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainWindowViewModel()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainWindowViewModel()
        {
            NotificationRequest = new InteractionRequest<INotification>();
            NotificationCommand = new DelegateCommand(Notify);

            ConfirmationRequest = new InteractionRequest<IConfirmation>();
            ConfirmationCommand = new DelegateCommand(Confirm);
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region 통지하기 - Notify()

        /// <summary>
        /// 통지하기
        /// </summary>
        private void Notify()
        {
            NotificationRequest.Raise
            (
                new Notification
                {
                    Content = "Notification Message",
                    Title   = "Notification"
                }, r => Message = "Notified"
            );
        }

        #endregion
        #region 확인하기 - Confirm()

        /// <summary>
        /// 확인하기
        /// </summary>
        private void Confirm()
        {
            ConfirmationRequest.Raise
            (
                new Confirmation
                {
                    Title   = "Confirmation",
                    Content = "Confirmation Message"
                }, 
                r => Message = r.Confirmed ? "Confirmed" : "Not Confirmed"
            );
        }

        #endregion
    }
}

 

▶ MainApplication.xaml

<prism:PrismApplication x:Class="TestProject.MainApplication"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:prism="http://prismlibrary.com/">
</prism:PrismApplication>

 

▶ MainApplication.xaml.cs

using System.Windows;

using Prism.Ioc;
using Prism.Unity;

using TestProject.Views;

namespace TestProject
{
    /// <summary>
    /// 메인 애플리케이션
    /// </summary>
    public partial class MainApplication : PrismApplication
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Protected

        #region 쉘 생성하기 - CreateShell()

        /// <summary>
        /// 쉘 생성하기
        /// </summary>
        /// <returns>쉘</returns>
        protected override Window CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }

        #endregion
        #region 타입 등록하기 - RegisterTypes(containerRegistry)

        /// <summary>
        /// 타입 등록하기
        /// </summary>
        /// <param name="containerRegistry">컨테이너 레지스트리 인터페이스</param>
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요