Я попытался создать свойство 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);