Как я могу принять пасты из буфера обмена в моем UserControl? - PullRequest
4 голосов
/ 13 августа 2010

У меня есть UserControl, который, как ни странно, объединяет кучу других элементов управления и логику в небольшой пакет. Он имеет свойство Text, которое принимает string и выполняет магию, отображая результаты для пользователя. Потрясающе.

Я получаю этот текст из TextBox. Пользователь вставляет текст из буфера обмена в текстовое поле, которое привязано к DP в моем UserControl.

Что я хотел бы сделать, так это вырезать среднего человека и принять пасты в моем UserControl.

Я уже пытался использовать прикрепленное событие DataObject.Pasting , но это, похоже, не работает.

Как ты это делаешь?


Ответил на мой вопрос моим текущим решением, но, честно говоря, он "пахнет". Если у кого-то есть лучший ответ, пожалуйста, добавьте его, и если он будет работать и лучше, я выберу его.

1 Ответ

3 голосов
/ 13 августа 2010

Мой мозг запущен. Привязки команд . Теперь я знаю, когда кто-то пытается вставить и может взять его оттуда.

XAML:

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

(извините за плохой код; пока пытаюсь заставить это работать) И обработчик событий:

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);
}

Это пахнет, ИМХО. Но я не уверен, как еще справиться с этим.

...