<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="CommandHandling" Height="300" Width="300"
>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<MenuItem Command="New" />
</MenuItem>
</Menu>
<TextBox x:Name="inputBox" TextChanged="OnTextboxTextChanged" />
</DockPanel>
</Window>
//File:Window.xaml.vb
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Imaging
Imports System.Windows.Shapes
Namespace WpfApplication1
Public Partial Class Window1
Inherits Window
Private unsavedChanges As Boolean = False
Public Sub New()
InitializeComponent()
Dim cmdBindingNew As New CommandBinding(ApplicationCommands.[New])
AddHandler cmdBindingNew.Executed, AddressOf NewCommandHandler
CommandBindings.Add(cmdBindingNew)
End Sub
Private Sub NewCommandHandler(sender As Object, e As ExecutedRoutedEventArgs)
If unsavedChanges Then
Dim result As MessageBoxResult = MessageBox.Show(Me, "Save changes to existing document?", "New", MessageBoxButton.YesNoCancel)
If result = MessageBoxResult.Cancel Then
Return
End If
If result = MessageBoxResult.Yes Then
SaveChanges()
End If
End If
inputBox.Clear()
End Sub
Private Sub OnTextboxTextChanged(sender As Object, e As RoutedEventArgs)
unsavedChanges = True
Console.WriteLine("changed")
End Sub
Private Sub SaveChanges()
unsavedChanges = False
Console.WriteLine("saved")
End Sub
End Class
End Namespace
|