728x90
반응형
728x170
▶ 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
반응형
그리드형(광고전용)
'Prism > WPF' 카테고리의 다른 글
[PRISM/WPF] 뷰 모델에서 윈도우 닫기 (0) | 2020.08.17 |
---|---|
[PRISM/WPF] InvokeCommandAction 클래스 : 이벤트에 반응해 명령 호출하기 (0) | 2020.07.05 |
[PRISM/WPF] InteractionRequest<T> 클래스 : 커스텀 대화 상자 표시하기 (0) | 2020.07.05 |
[PRISM/WPF] InteractionRequest<T> 클래스 : 커스텀 대화 상자 표시하기 (0) | 2020.07.04 |
[PRISM/WPF] InteractionRequest<T> 클래스 : 팝업 표시하기 (0) | 2020.07.04 |
[PRISM/WPF] IRegionNavigationJournal 인터페이스 : 탐색 저널 사용하기 (0) | 2020.07.04 |
[PRISM/WPF] IRegionMemberLifetime 인터페이스 : KeepAlive 속성을 사용해 메모리에서 자동으로 뷰 제거하기 (0) | 2020.07.04 |
[PRISM/WPF] IConfirmNavigationRequest 인터페이스 : ConfirmNavigationRequest 메소드를 사용해 탐색 요청 확인하기 (0) | 2020.07.03 |
[PRISM/WPF] IRegionManager 인터페이스 : RequestNavigate 메소드를 사용해 매개 변수 전달하기 (0) | 2020.07.03 |
[PRISM/WPF] INavigationAware 인터페이스 : IsNavigationTarget 메소드를 사용해 탐색시 뷰 인스턴스 제어하기 (0) | 2020.07.03 |
댓글을 달아 주세요