Sl 4, MVVM: Используя Inlines в TextBlock, как привязать к ViewModel? - PullRequest
2 голосов
/ 29 марта 2011


Мы форматируем текст для TextBlock, добавляя серию объектов System.Windows.Documents.Run в TextBlock.Inlines.

Как мы можем связать форматированный текст в ViewModel для отображения в TextBlock?

Спасибо за любой совет ...

1 Ответ

0 голосов
/ 30 марта 2011

Я попытался создать свойство InlineCollection в aViewModel, а затем установить привязку в xaml, но InlineCollection в TextBlock не является привязываемым, поскольку он не является DependencyProperty. Ответ на этот вопрос показывает создание собственного элемента управления и превращение его в DependencyProperty, что является хорошим решением.

VM:

private InlineCollection inlineCollection;

 public InlineCollection TextBlockInlineCollection {
    get
    {
        return inlineCollection;
    }
    set
    {
        inlineCollection = value;
        NotifyPropertyChanged("TextBlockInlineCollection");
    }
}

XAML: // не работает

Вы также можете динамически создавать TextBlock в коде, используя XamlReader: Пример:

   string textBlock = @"<TextBlock xmlns='http://schemas.microsoft.com/client/2007' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' x:Name='infoBarTextBlockWithFormatting' AutomationProperties.AutomationId='infoBarTextBlockWithFormatting' Margin='9,0,0,0' TextWrapping='Wrap'>";
   textBlock = String.Concat(textBlock, e.NewValue.ToString(), "</TextBlock>");
   infoBar.infoBarRunHolder.Child = (TextBlock)XamlReader.Load(textBlock);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...