WP7 - Привязка данных + Курсив + Wordwrap проблема - PullRequest
1 голос
/ 12 апреля 2011

Вот что я пытаюсь сделать. Кажется, я пока не могу найти решение:

  • У меня есть 2 строковых источника данных из веб-сервиса, и на внешнем интерфейсе я хочу объединить их в одно предложение, разделенное запятой.
  • Первая часть, которую я хочу обычным шрифтом, вторая часть, которую я хочу курсивом
  • Я также хочу предложение к переносу слов
  • Я использую MVVM, поэтому я хочу кое-что как связать эти источники строковых данных с текстовым блоком, как ...

Случаи, которые я хочу уметь обрабатывать:

Нормальный:
ех. Это часть предложения 1, Это часть предложения 2

Нет второй части, поэтому нет запятой
ех. Это предложение, часть 1, я все еще хочу, чтобы это было в состоянии к переносу слов

Вторая часть слова переносится
ех. Это предложение часть 1, Это предложение
часть 2 переносится на вторую строку

Также

  • Вторая часть только с переносом слов
  • Первая часть wordwraps, за которой следует вторая часть

Кажется, нет простого решения. Я могу подумать, что у меня есть PropertyChangedEventHandler, который уведомляет меня, когда эти строки были возвращены с веб-сервера, а затем форматирует строку в codebehind ...

1 Ответ

2 голосов
/ 12 апреля 2011

Чтобы добиться эффекта, который вы пытаетесь добиться непрерывной переноса слов с помощью курсивного форматирования, можно достичь только с помощью элемента <Run> в пределах TextBlock. Однако вы не можете связать содержимое элемента Run, поэтому вам нужно создать его в коде.

Если вы получите два отдельных ответа от веб-службы (они не возвращаются после одного вызова), то вы не можете полагаться на то, какой из них придет первым, поэтому я бы использовал агрегацию событий, чтобы уведомить представление от модель представления, когда все необходимые данные были получены. Библиотека PRISM для WP7 включает реализацию, которую можно использовать для достижения эффекта (обратите внимание, что PRISM для WP7 на намного легче, чем его аналоги WPF или Silverlight).

В ответ на событие ваше представление может извлечь свойства из модели представления, создать элементы TextBlock и его компонент Run, а затем соответствующим образом обновить. Фактически, когда вы подписываетесь на событие, используя PRISM, вы можете указать, что обработчик этого события запускается в потоке пользовательского интерфейса, что, без сомнения, поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...