我们通过向TextBlock.Inlines添加一系列System.Windows.Documents.Run对象来格式化TextBlock的文本。
我们如何绑定ViewModel中的格式化文本以显示在TextBlock中?
感谢您的任何建议......
答案 0 :(得分:0)
我尝试在aViewModel中创建InlineCollection属性,然后在xaml中设置绑定,但TextBlock中的InlineCollection不可绑定,因为它不是DependencyProperty。答案to this question显示创建自己的控件并使其成为DependencyProperty,这是一个不错的解决方法。
VM:
private InlineCollection inlineCollection;
public InlineCollection TextBlockInlineCollection {
get
{
return inlineCollection;
}
set
{
inlineCollection = value;
NotifyPropertyChanged("TextBlockInlineCollection");
}
}
XAML: //不起作用
您还可以使用XamlReader在代码中动态创建TextBlock: 例如:
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);