あなたが行動を使用することができます。
まず、プロジェクトのインタラクティブ機能への参照を追加する必要があります。
参照先 - addReference-assemblies-System.Windows.Interactivity。
ここで、動作を作成します。
public class CloseWindowBehavior : Behavior<Window>
{
protected override void OnAttached()
{
this.AssociatedObject.Closing += AssociatedObject_Closing;
}
private void AssociatedObject_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (MessageBox.Show("Sure you wanna close?", "..", MessageBoxButton.YesNo) == MessageBoxResult.No)
e.Cancel = true;
}
}
閉じるボタンをクリックすると、割り当てられたイベントが発生し、メッセージボックスが表示されます。
これで、作成した動作をxamlファイルで宣言する必要があります。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<i:Interaction.Behaviors>
<local:CloseWindowBehavior />
</i:Interaction.Behaviors>
<Grid>
</Grid>
あなたはパターンMVVMを使用しているので、動作は、背後にあるコードで、単一の行を記述する必要はありませんので、良い選択です。
'base.OnClosing(e)'を呼び出すことを忘れないでください。 –
あなたがAPP.XAML.CS.にある – suulisin
HIを助けてくれたら、アップしてください。 public partial class App:アプリケーション、IDisposable。したがって、 'System.Windows.Application'のようなエラーが発生すると、OnClosing.soの実行中に 'OnClosing'の定義が含まれないため、これは実行できません –