2011-07-19 2 views
0

У меня есть приложение, где я генерирую текст (около 500 символов), и я хотел бы, чтобы пользователь имел некоторые способы копирования этого текста для использования вне приложения.Как разрешить пользователю копировать произвольный текст?

Я не хочу использовать какие-либо возможности для этого приложения (например, Интернета или контактов).

Вот что я пытался (и почему это не удалось)

  • TextBox. IsReadOnly = true; Выбрать все();
    • Не можете SelectAll только для чтения текстового поля
  • Выключать только для чтения, скрыть SIP
    • Не удается скрыть SIP на (не только для чтения) TextBox, что пользователь взаимодействует с (я хочу, чтобы позволить пользователю копировать, поэтому необходимо взаимодействовать с контролем)
  • позволяют редактирует, показать глотка, SelectAll()
    • значок «копия» не отображается ип менее пользователь выбрал для выбора текста
  • О выборе изменилось (на самом деле изменилось), SelectAll()
    • Значок «копия» не отображается, если пользователь не выбрал текст? Значок копирования отображается беспорядочно, но я бы не назвал его приемлемым для пользователя.

Таким образом, в этот момент, я довольно далеко от того, что я хочу в пользовательский опыт, и я до сих пор нет ничего, что работает. Какие-либо предложения?

Некоторых других возможных способов, чтобы ответить на мой вопрос включает в себя:

  • «Как заставить кнопку копирования появляться над текстом я программно выбранным?»
  • «Как изменить поведение выбора крана в текстовом поле?»

ответ

0

Вот что я в конце концов получил в основном работают

private void Export(StackPanel stacker) 
    { 
     var exportHeader = new TextBlock(); 
     exportHeader.Text = "Export"; 
     stacker.Children.Add(exportHeader); 
     var exportBox = new TextBox(); 
     stacker.Children.Add(exportBox); 
     //exportBox.IsReadOnly = true; // hides SIP, but causes an exception with SelectAll() (pre-Mango, I haven't tried on Mango yet) 
     exportBox.FontSize = 1; 
     exportBox.Text = textToExport; 
     exportBox.GotFocus += new System.Windows.RoutedEventHandler((send, ev) => 
     { 
      ((TextBox)send).SelectAll(); 
     }); 
     exportBox.Focus(); 
    } 

По-видимому, в результате чего размер шрифта 1 делает разницу здесь, может быть, потому, что весь текст может отображаться на экран сразу? Кто знает.

Я принял этот ответ, потому что никто больше не опубликовал лучшего решения. Я был бы признателен за лучшее решение. Если вы можете заставить SIP уйти, это будет потрясающе.

+0

В ожидании дальнейших комментариев, я буду принимать этот ответ. Мне не нравится решение, но кажется, что это лучшее, что у нас есть. – McKay

0

AFAIK есть некоторые ограничения на Windows Phone 7: Буфер обмена только

  • Работы в TextBox и может копировать только текст на пользователи хотят
  • Текст хранится только до тех пор, пока устройство блокируется. Если устройство блокируется, буфер обмена будет протирать

Даже если вы пытаетесь Clipboard.SetText Method, вы заметите SecurityException, если этот метод вызывается без взаимодействия пользователей. Это делается для того, чтобы данные пользователей были под контролем, чтобы ни одно из них не могло копировать непризнанный текст.

Но вы можете попробовать Matt Laceys WP7Clipboard. Он сохраняет содержимое буфера обмена внутри изображения и даже может копировать растровые изображения.

+0

Итак, да, я понимаю эти ограничения, это не те ограничения, которые меня раздражают, я ожидаю, что текст будет помещен в текстовое поле и позволит пользователю легко его скопировать. Это то, что я хочу. Как мне сделать это легко для них? AFAICT, буфер обмена Мэтта Лэйси не работает в собственных приложениях, таких как электронная почта, просмотр веб-страниц и текстовые сообщения, что не работает для меня. – McKay

0

Попробуйте рестайлинг текстовое поле, как на http://mobileworld.appamundi.com/blogs/peterfoot/archive/2011/02/08/copyable-textblock-for-windows-phone.aspx

+0

Итак, этот скопируемый текстовый блок - это в основном то, что я пробовал с моей первой пулей, проблема в том, что мне нужно разрешить пользователю легко копировать весь текст, и его много. Я не хочу, чтобы пользователю приходилось вручную выбирать текст (потому что его много), я хочу, чтобы пользователь быстро скопировал текст. – McKay

Смежные вопросы