2010-08-13 19 views
3

J'ai un UserControl qui, curieusement, regroupe un tas d'autres contrôles et de la logique dans un petit paquet bien rangé. Il a une propriété Text qui accepte un string et fait de la magie, affichant les résultats pour l'utilisateur. Impressionnant.Comment puis-je accepter les pâtes du presse-papiers dans mon UserControl?

Je reçois ce texte d'un TextBox. L'utilisateur colle du texte à partir du presse-papiers dans la zone de texte, qui est liée à un DP sur mon UserControl.

Ce que je voudrais faire est de supprimer l'intermédiaire et accepter les pâtes dans mon UserControl.

J'ai déjà essayé d'utiliser l'événement attaché DataObject.Pasting, mais cela semble ne pas fonctionner.

Comment faites-vous?


J'ai répondu à ma propre question avec ma solution actuelle, mais honnêtement, il "sent". Si quelqu'un a une meilleure réponse, s'il vous plaît ajoutez-la et si ça marche et que c'est mieux, je vais la sélectionner.

Répondre

2

Mon cerveau a tiré. Command Bindings. Maintenant, je sais quand quelqu'un essaie de coller et peut le prendre à partir de là.

XAML:

<UserControl.CommandBindings> 
    <CommandBinding 
     Command="Paste" 
     Executed="CommandBinding_Executed"/> 
</UserControl.CommandBindings> 

(excuse le mauvais code, essayer d'obtenir ce travail pour l'instant) et le gestionnaire d'événements:

try 
{ 
    var text = Clipboard.GetData(DataFormats.Text) as string; 
    if (string.IsNullOrWhiteSpace(text)) 
     return; 
    Lines = new Lines(text); 
    e.Handled = true; 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message, "Paste failed", MessageBoxButton.OK); 
} 

Cela sent, à mon humble avis. Mais je ne suis pas sûr de savoir comment gérer ça.