рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд┐рдЬрд╝реНрдо рдореИрдиреБрдЕрд▓ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрд▓реНрд▓реЗрдЦ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдПрдВ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА:
рдмрд╛рддрдЪреАрдд рдЕрдиреБрд░реЛрдз рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
MVVM рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдХрд┐ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рд╕реАрдзреЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдпрд╣ рджреГрд╢реНрдп рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреЙрд▓рдмреИрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рд╕рдВрд╡рд╛рдж рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рджреГрд╢реНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИред рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рджреГрд╢реНрдп рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдХрд╛рдлреА рд▓рдЪреАрд▓рд╛ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдмреАрдЪ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдкреГрдердХреНрдХрд░рдг рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рд▓реЙрдЬрд┐рдХ рдХреЛ рдЕрддрд┐рдХреНрд░рдордг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рджреГрд╢реНрдп рдореЗрдВ рдХреЗрд╡рд▓ рджреГрд╢реНрдп рдкрд╣рд▓реВ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдЗрдВрдЯрд░реИрдХреНрд╢рди рд▓реЙрдЬрд┐рдХ рдХрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдЬрд╛рдЗрдирд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЗрдиреЗрд░рд┐рдХ рдПрдорд╡реАрд╡реАрдПрдо рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ рдФрд░ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдореЙрдбрд▓ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм
DelegateCommand
рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░
InvokeCommandBehavior
рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ
InvokeCommandBehavior
рд╣реИред
рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА
IInteractionRequest
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░
InteractionRequest<T>
IInteractionRequest
InteractionRequest<T>
рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдзреЗ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред
IInteractionRequest
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЗрд╡реЗрдВрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреГрд╢реНрдп рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИред
InteractionRequest<T>
рд╡рд░реНрдЧ
IInteractionRequest
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдЕрдиреБрд░реЛрдз рд╕рдВрджрд░реНрдн рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд╛рде рд╣реА рдХреЙрд▓рдмреИрдХ рдбреЗрд▓рд┐рдЧреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ
IInteractionRequest
рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИред
рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХреА рд╢реБрд░реВрдЖрдд
InteractionRequest<T>
рдХреНрд▓рд╛рд╕ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреЗ рджреМрд░рд╛рди рд╡реНрдпреВ рдореЙрдбрд▓ рдХреЗ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдХреЛ рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯ рдХрд░рддрд╛ рд╣реИред
Raise
рд╡рд┐рдзрд┐ рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ (рдЬреИрд╕реЗ
T
) рдФрд░ рдПрдХ рдХреЙрд▓рдмреИрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмрд╛рддрдЪреАрдд рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХреЛ рдбреЗрдЯрд╛ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдХреЙрд▓рдмреИрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрд╕рдХреЗ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рджреГрд╢реНрдп рдореЙрдбрд▓ рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреЗ рджреМрд░рд╛рди рд╣реБрдП рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рдкрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
public interface IInteractionRequest { event EventHandler<InteractionRequestedEventArgs> Raised; } public class InteractionRequest<T> : IInteractionRequest { public event EventHandler<InteractionRequestedEventArgs> Raised; public void Raise(T context, Action<T> callback) { var handler = this.Raised; if (handler != null) { handler( this, new InteractionRequestedEventArgs( context, () => callback(context))); } } }
рдкреНрд░рд┐рдЬреНрдо рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрджрд░реНрдн рдХрдХреНрд╖рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░реИрдХреНрд╢рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
Notification
рд╡рд░реНрдЧ рд╕рднреА рд╕рдВрджрд░реНрдн рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗред рдпрд╣ рджреЛ рдЧреБрдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ -
Title
рдФрд░
Content
ред рдЖрдорддреМрд░ рдкрд░, рдпрд╣ рд╕рдВрджреЗрд╢ рдПрдХ рддрд░рдлрд╝рд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рддрдЪреАрдд рдХреЗ рджреМрд░рд╛рди рд╕рдВрджрд░реНрдн рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред
Confirmation
рд╡рд░реНрдЧ рдХреЛ
Notification
рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рдПрдХ рддреАрд╕рд░реА рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИ,
Confirmed
, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдСрдкрд░реЗрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдпрд╛ рдЗрд╕реЗ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ред
Confirmation
рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ
MessageBox
-рд╕реНрдЯрд╛рдЗрд▓ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд╣рд╛рдВ / рдирд╛ рдореЗрдВ рдЬрд╡рд╛рдм рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрджрд░реНрдн рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ,
Notification
рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛, рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдФрд░ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
InteractionRequest<T>
рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд░реАрдб-рдУрдирд▓реА рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред
public IInteractionRequest ConfirmCancelInteractionRequest { get { return this.confirmCancelInteractionRequest; } } this.confirmCancelInteractionRequest.Raise( new Confirmation("Are you sure you wish to cancel?"), confirmation => { if (confirmation.Confirmed) { this.NavigateToQuestionnaireList(); } }); }
рдмрд╛рддрдЪреАрдд рдХреЗ рджреГрд╢реНрдп рд░реВрдк рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЪреВрдВрдХрд┐ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░реИрдХреНрд╢рди рд▓реЙрдЬрд┐рдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рджреГрд╢реНрдп рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЕрдХреНрд╕рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдореЗрдВ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рджреГрд╢реНрдп рдХреЛ рдмрд╛рддрдЪреАрдд рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдШрдЯрдирд╛ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд░реВрдк рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред Microsoft рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмреНрд▓реЗрдВрдб рд╡реНрдпрд╡рд╣рд╛рд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЯреНрд░рд┐рдЧрд░ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЬрдм рднреА рдХреЛрдИ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмреНрд▓реЗрдВрдб рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдорд╛рдирдХ
EventTrigger
рдЙрдкрдпреЛрдЧ рд╡реНрдпреВ рдореЙрдбрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЗрдВрдЯрд░реИрдХреНрд╢рди рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ
EventTrigger
рдХрд░рдХреЗ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рд┐рдЬрд╝рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ
EventTrigger
, рдЬрд┐рдиреНрд╣реЗрдВ
InteractionRequestTrigger
EventTrigger
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
IInteractionRequest
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЙрдкрдпреБрдХреНрдд
Raised
рдИрд╡реЗрдВрдЯ рд╕реЗ
IInteractionRequest
рд╣реИред
рдИрд╡реЗрдВрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж,
InteractionRequestTrigger
рдЗрд╕рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреЙрдкрдЕрдк
PopupChildWindowAction
рдХреНрд▓рд╛рд╕ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдкрдЕрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИред рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХрд╛
DataContext
рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред
ContentTemplate
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреЙрдкрдЕрдк рд╡рд┐рдВрдбреЛ рд╢реАрд░реНрд╖рдХ рд╕рдВрджрд░реНрдн рд╡рд╕реНрддреБ рдХреЗ
Title
рдЧреБрдг рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
PopupChildWindowAction
рдФрд░
PopupChildWindowAction
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
<i:Interaction.Triggers> <prism:InteractionRequestTrigger SourceObject="{Binding ConfirmCancelInteractionRequest}"> <prism:PopupChildWindowAction ContentTemplate="{StaticResource ConfirmWindowTemplate}"/> </prism:InteractionRequestTrigger> </i:Interaction.Triggers> <UserControl.Resources> <DataTemplate x:Key="ConfirmWindowTemplate"> <Grid MinWidth="250" MinHeight="100"> <TextBlock TextWrapping="Wrap" Grid.Row="0" Text="{Binding}"/> </Grid> </DataTemplate> </UserControl.Resources>
рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреЙрдк-рдЕрдк рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдкреЙрдк-рдЕрдк рдореЗрдВ рдпрд╛ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рд╕рдВрдкрддреНрддрд┐ рдХреА
Content
рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпреВ рдореЙрдбрд▓ рдореЗрдВ рд╡рд╛рдкрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рдВрд╢реЛрдзрд┐рдд рдбреЗрдЯрд╛ рдХреА рдмрдЪрдд рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
OK
рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ,
Confirmed
рдХреА
Confirmed
рд╕рдВрдкрддреНрддрд┐ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рд╣реЛрддреА
true
ред
рдЕрдиреНрдп рдЗрдВрдЯрд░реИрдХреНрд╢рди рддрдВрддреНрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдп рдЯреНрд░рд┐рдЧрд░реНрд╕ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЗ рдЯреНрд░рд┐рдЧрд░ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ
InteractionRequestTrigger
рдФрд░
PopupChildWindowAction
рд╡рд░реНрдЧреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд╕реНрдЯрдо рдкреЙрдкрдЕрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдПрдБ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░рд┐рдЬрд╝реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА WPF рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдХреНрд╢рди рдХреНрд▓рд╛рд╕ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреЙрдкрдЕрдк рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдЪреВрдХ рдХреЛ рдФрд░ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдмрд╛рд▓ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХрд╛ рдПрдХ рд░рд┐рдХреНрдд рдмрдирд╛рдПрдВред
<Window 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:localInter="clr-namespace:PrismNotifications.Notifications" xmlns:inter="clr-namespace:Microsoft.Practices.Prism.Interactivity.InteractionRequest;assembly=Microsoft.Practices.Prism.Interactivity" xmlns:local="clr-namespace:PrismNotifications" x:Class="PrismNotifications.MainWindow" Title="MainWindow" Height="350" Width="525"> <Window.DataContext> <local:MainWindowsViewModel /> </Window.DataContext> <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <i:Interaction.Triggers> <inter:InteractionRequestTrigger SourceObject="{Binding ShowNotificationInteractionRequest}"> <localInter:ShowChildWindowsAction> <DataTemplate DataType="{x:Type inter:Notification}"> <Grid Width="200" Height="150"> <TextBlock Text="{Binding Content}" /> </Grid> </DataTemplate> </localInter:ShowChildWindowsAction> </inter:InteractionRequestTrigger> </i:Interaction.Triggers> <StackPanel HorizontalAlignment="Right" Margin="10" Grid.Row="1"> <Button Command="{Binding ShowNotificationCommand}"> Show notificaiton windows </Button> </StackPanel> </Grid> </Window>
рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рд╕реАрдзреЗ XAML рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдФрд░ рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдЧреБрдг рд╣реИ рдЬреЛ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИред
using Microsoft.Practices.Prism.Commands; using Microsoft.Practices.Prism.Interactivity.InteractionRequest; using Microsoft.Practices.Prism.ViewModel; namespace PrismNotifications {
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
Raise
рдкрджреНрдзрддрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧреБрдг
Title
рдФрд░
Content
рд╕рд╛рде
Notification
рд╡рд░реНрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
ShowNotificationInteractionRequest
рдЧреБрдг рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз
InteractionRequestTrigger
ShowNotificationInteractionRequest
рдЯреНрд░рд┐рдЧрд░, рдЬреЛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдЕрдиреБрд░реЛрдз рд╣реИ,
Grid
рддрддреНрд╡ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдЯреНрд░рд┐рдЧрд░ рдХреЗ рдЕрдВрджрд░
ShowChildWindowsAction
рдПрдХреНрд╢рди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред
using System.Windows; using System.Windows.Interactivity; using System.Windows.Markup; using Microsoft.Practices.Prism.Interactivity.InteractionRequest; namespace PrismNotifications.Notifications {
рдпрд╣ рд╡рд░реНрдЧ
TriggerAction<T>
рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ
TriggerAction<T>
, рдЬрд╣рд╛рдВ
T
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рд╕рдВрд▓рдЧреНрди рд╣реЛрддрд╛ рд╣реИред
ContentPropertyAttribute
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
ContentPropertyAttribute
,
ContentPropertyAttribute
рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐
ContentDataTemplate
рд╕рдВрдкрддреНрддрд┐ рдПрдХ рд╕рд╛рдордЧреНрд░реА рдЧреБрдг рд╣реЛрдЧреАред рдЬрдм рдХреЛрдИ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рд╣реЛрддрд╛ рд╣реИ, рддреЛ
Invoke
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрджрд░реНрдн рдФрд░ рдХреЙрд▓рдмреИрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛
InteractionRequestedEventArgs
RequestedEventArgs рдкрд╛рд╕ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЬрдм рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдВрдбреЛ рдХреЛ
args.Context.Title
рдХреЗ рд╕рд╛рде
args.Context.Title
рдкреНрд░реЙрдкрд░реНрдЯреА рдФрд░
args.Context.Title
рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдВрдЯреЗрдВрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐ (рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ) рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
protected override void Invoke(object parameter) { var args = (InteractionRequestedEventArgs) parameter;
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдпрд╣ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдорд┐рд▓рддреА рд╣реИ:

рдкреЙрдкрдЕрдк рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
WPF рдЖрджрд┐рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ, рдПрдХ рдЕрджреНрднреБрдд
рдкреЙрдкрдЕрдк рдХреНрд▓рд╛рд╕ рд╣реИ, рдЬреЛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдкреЙрдкрдЕрдк рд╣реИред рд╣рдо рдЗрд╕ рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗ: рдЬрдм рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдкреЙрдкрдЕрдк рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рдмрдВрдж рд░рд╛рдЬреНрдп рдореЗрдВ рдПрдХ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдкреЙрдкрдЕрдк рдХреЛ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреЗ рдореВрд▓ рддрддреНрд╡ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛
Panel
рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрдЧ рдореВрд▓ рддрддреНрд╡ рд╣реИ рдФрд░ рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдкреЙрдкрдЕрдк рдХреЛ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдПрдХ рдирдпрд╛
Grid
рдмрдирд╛рдПрдВ рдФрд░ рдореВрд▓ рддрддреНрд╡ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ, рдореМрдЬреВрджрд╛ рдПрдХ рдХреЛ рдЗрд╕рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВред рдЬрдм рдкреЙрдкрдЕрдк рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╡рд┐рдВрдбреЛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрдВрдЧреЗ, рдФрд░ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░, рд╣рдо рдХреЙрд▓рдмреИрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдЕрдирд▓реЙрдХ рдФрд░ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред рдЬрдм рдХреЛрдИ рд╡рд┐рдВрдбреЛ рдЪрд▓рддреА рд╣реИ, рддреЛ рдкреЙрдкрдЕрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрд╛рдзреНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреЙрдкрдЕрдк рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдк рдЗрд╕рдХреА рд╕рдВрдкрддреНрддрд┐
PopupAnimation = PopupAnimation.Fade
рдФрд░
AllowsTransparency = true
рдХреЛ рдЗрд╕рдХреЗ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рдФрд░ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Interactivity; using System.Windows.Markup; using Microsoft.Practices.Prism.Interactivity.InteractionRequest; namespace PrismNotifications.Notifications {
MainWindows рдореЗрдВ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:
<i:Interaction.Triggers> <inter:InteractionRequestTrigger SourceObject="{Binding ShowNotificationInteractionRequest}"> <localInter:ShowPopupAction ContentDataTemplate="{StaticResource popupTemplate}" /> </inter:InteractionRequestTrigger> </i:Interaction.Triggers>
рдЕрдм рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд╕рдВрджреЗрд╢ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрд░рдВрдн рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕рдВрд▓рдЧреНрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдШреЛрд╖рдгрд╛ рдХреЛ
App.xaml
рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:localInter="clr-namespace:Microsoft.Practices.Prism.Interactivity.InteractionRequest;assembly=Microsoft.Practices.Prism.Interactivity" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" x:Class="PrismNotifications.App" StartupUri="MainWindow.xaml"> <Application.Resources> <DataTemplate DataType="{x:Type localInter:Notification}" x:Key="popupTemplate"> <Border Width="200" Height="150" Background="{StaticResource {x:Static SystemColors.WindowBrushKey}}" BorderBrush="{StaticResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" CornerRadius="2" Padding="5"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <TextBlock Text="{Binding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" /> <Button Content="Close" HorizontalAlignment="Right" Grid.Row="2"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <ei:ChangePropertyAction TargetObject="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Popup}}" PropertyName="IsOpen" Value="False" /> </i:EventTrigger> </i:Interaction.Triggers> </Button> <TextBlock HorizontalAlignment="Center" Text="{Binding Title}" /> </Grid> </Border> </DataTemplate> </Application.Resources> </Application>
рд╕рдВрджреЗрд╢ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддрддреНрд╡ рдЯреНрд░реА рдореЗрдВ
Popup
рдвреВрдВрдврдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреА
IsOpen
рд╕рдВрдкрддреНрддрд┐ рдХреЛ
false
рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдЯреНрд░рд┐рдЧрд░реНрд╕ рдФрд░ рдПрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реЙрд░реНрдо рдХреА рдПрдХ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдорд┐рд▓рддреА рд╣реИ:

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рдЖрдк рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдкреВрд░реНрдг рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рде, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдкреБрд░рд╛рд▓реЗрдЦредрдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рдПрдХ рдкреЛрд╕реНрдЯ рдХрд╛ рд▓рд┐рдВрдХ