Use Dictionary to record which textbox has been changed and not saved : TextBox « Windows Presentation Foundation « VB.Net






Use Dictionary to record which textbox has been changed and not saved

Use Dictionary to record which textbox has been changed and not saved
     
<Window x:Class="Commands.TwoDocument"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="TwoDocument" Height="300" Width="300">

  <Window.Resources>
    <CommandBinding x:Key="binding" Command="ApplicationCommands.Save" Executed="SaveCommand" CanExecute="SaveCommand_CanExecute" />
  </Window.Resources>

  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto"></RowDefinition>
      <RowDefinition Height="Auto"></RowDefinition>
      <RowDefinition></RowDefinition>
      <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Menu Grid.Row="0">
      <MenuItem Header="File">
        <MenuItem Command="New"></MenuItem>
        <MenuItem Command="Open"></MenuItem>
        <MenuItem Command="Save"></MenuItem>
        <MenuItem Command="SaveAs"></MenuItem>
        <Separator></Separator>
        <MenuItem Command="Close"></MenuItem>
      </MenuItem>
    </Menu>

    <TextBox Margin="5" Grid.Row="2" TextWrapping="Wrap" AcceptsReturn="True" TextChanged="txt_TextChanged">
      <TextBox.CommandBindings>
        <StaticResource ResourceKey="binding"></StaticResource>
      </TextBox.CommandBindings>
      
    </TextBox>

  </Grid>
</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 Commands
  Public Partial Class TwoDocument
    Inherits System.Windows.Window
    Private isDirty As New Dictionary(Of [Object], Boolean)()
    Public Sub New()
      InitializeComponent()
    End Sub

    Private Sub SaveCommand(sender As Object, e As ExecutedRoutedEventArgs)
      Dim text As String = DirectCast(sender, TextBox).Text
      isDirty(sender) = False
    End Sub
    Private Sub txt_TextChanged(sender As Object, e As RoutedEventArgs)
      isDirty(sender) = True
    End Sub
    Private Sub SaveCommand_CanExecute(sender As Object, e As CanExecuteRoutedEventArgs)
      If isDirty.ContainsKey(sender) AndAlso isDirty(sender) = True Then
        e.CanExecute = True
      Else
        e.CanExecute = False
      End If
    End Sub
  End Class
End Namespace

   
    
    
    
    
  








Related examples in the same category

1.You cannot use TextBox and Image at the same time for Button Content
2.Single line and Multiline TextBoxSingle line and Multiline TextBox
3.TextBox ColumnTextBox Column
4.Bind value to TextBoxBind value to TextBox
5.Provide Keyboard Access to Text BoxesProvide Keyboard Access to Text Boxes
6.An upside down TextBoxAn upside down TextBox
7.Style with Data Trigger for TextBoxStyle with Data Trigger for TextBox
8.TextBox with custom ErrorTemplate and ToolTipTextBox with custom ErrorTemplate and ToolTip
9.TextBox uses the ExceptionValidationRule and UpdateSourceExceptionFilter handlerTextBox uses the ExceptionValidationRule and UpdateSourceExceptionFilter handler
10.TextBox with UpdateSourceExceptionFilter handlerTextBox with UpdateSourceExceptionFilter handler
11.TextBox focus listenerTextBox focus listener
12.TextBox MouseLeftButtonDown action and PreviewMouseLeftButtonDown actionTextBox MouseLeftButtonDown action and PreviewMouseLeftButtonDown action
13.Mark the text control as being changed to prevent any text content or selection changed eventsMark the text control as being changed to prevent any text content or selection changed events
14.Listen to TextBox text changed eventListen to TextBox text changed event
15.Handler for the PreviewKeyDown event on the TextBoxHandler for the PreviewKeyDown event on the TextBox
16.Format TextBox with MenuItem: normal, bold, italicFormat TextBox with MenuItem: normal, bold, italic
17.TextBox: set text, select all, clear, prepend, insert, append, cut, paste, undoTextBox: set text, select all, clear, prepend, insert, append, cut, paste, undo
18.Set TextBox to editableSet TextBox to editable
19.TextBox PreviewTextInputTextBox PreviewTextInput
20.Scroll TextBoxScroll TextBox
21.TextBox text changed eventTextBox text changed event
22.TextBox TextChanged eventTextBox TextChanged event
23.Use TextBox.CommandBindingst to bind commandUse TextBox.CommandBindingst to bind command
24.Set TextBox ContextMenu to nullSet TextBox ContextMenu to null
25.TextBox Selection start, end and selected textTextBox Selection start, end and selected text
26.Scrollable TextBox ColumnScrollable TextBox Column
27.Check Spelling ErrorCheck Spelling Error