Esto surgió en los foros de MSDN y la verdad es que me pareció interesante ya que puede haber situaciones en las que no queramos que el usuario copie datos para pegarlos en otra aplicación e incluso obligarle a que introduzca los datos por teclado en vez de que haga un paste.
Me puse a investigar y en la clase System.Windows.DataObject me encontré una serie de métodos estáticos que resolvían este problema
DataObject.AddPastingHandler(dependencyObject, handler);
DataObject.RemovePastingHandler(dependencyObject, handler);
DataObject.AddCopyingHandler(dependencyObject, handler);
DataObject.RemovePastingHandler(dependencyObject, handler);
DataObject.AddSettingDataHandler(dependencyObject, handler);
DataObject.RemoveSettingDataHandler(dependencyObject, handler);
Por ejemplo
- <TextBlock Text=»Regular TextBox: « Grid.Row=»0″ Grid.Column=»0″ />
- <TextBox x:Name=»_TextBlock1″ Grid.Row=»0″ Grid.Column=»1″ />
- <TextBlock Text=»No Copy: « Grid.Row=»1″ Grid.Column=»0″ />
- <TextBox x:Name=»_TextBlock2″ Grid.Row=»1″ Grid.Column=»1″ />
- <TextBlock Text=»No Drag Copy: « Grid.Row=»2″ Grid.Column=»0″ />
- <TextBox x:Name=»_TextBlock3″ Grid.Row=»2″ Grid.Column=»1″ />
- <TextBlock Text=»No Paste: « Grid.Row=»3″ Grid.Column=»0″ />
- <TextBox x:Name=»_TextBlock4″ Grid.Row=»3″ Grid.Column=»1″ />
- public Window1()
- {
- InitializeComponent();
- DataObject.AddCopyingHandler(_TextBlock2, NoCopy);
- DataObject.AddCopyingHandler(_TextBlock3, NoDragCopy);
- DataObject.AddPastingHandler(_TextBlock4, NoPaste);
- }
- private void NoCopy(object sender, DataObjectCopyingEventArgs e)
- {
- e.CancelCommand();
- }
- private void NoDragCopy(object sender, DataObjectCopyingEventArgs e)
- {
- if (e.IsDragDrop)
- { e.CancelCommand(); }
- }
- private void NoPaste(object sender, DataObjectPastingEventArgs e)
- {
- e.CancelCommand();
- }
Como veis también podemos impedir el Drag de nuestros elementos a otras aplicaciones, una manera de asegurarnos que nuestros datos no saldrán de nuestra aplicación.
Esto surgió en los foros de MSDN y la verdad es que me pareció interesante ya que puede haber situaciones