Silverlight 4.0 SL4,MVVM:在文本块中使用内联线,如何绑定到ViewModel?

Silverlight 4.0 SL4,MVVM:在文本块中使用内联线,如何绑定到ViewModel?,silverlight-4.0,mvvm,Silverlight 4.0,Mvvm,我们通过将一系列System.Windows.Documents.Run对象添加到TextBlock.Inlines来格式化TextBlock的文本 如何将ViewModel中的格式化文本绑定到TextBlock中显示 感谢您的建议…我尝试在aViewModel中创建InlineCollection属性,然后在xaml中设置绑定,但是TextBlock中的InlineCollection不可绑定,因为它不是DependencyProperty。答案是创建您自己的控件并使其成为Dependency


我们通过将一系列System.Windows.Documents.Run对象添加到TextBlock.Inlines来格式化TextBlock的文本

如何将ViewModel中的格式化文本绑定到TextBlock中显示


感谢您的建议…

我尝试在aViewModel中创建InlineCollection属性,然后在xaml中设置绑定,但是TextBlock中的InlineCollection不可绑定,因为它不是DependencyProperty。答案是创建您自己的控件并使其成为DependencyProperty,这是一个不错的解决方法

虚拟机:

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);
string textBlock=@”;
textBlock=String.Concat(textBlock,例如NewValue.ToString(),“”);
infoBar.infoBarRunHolder.Child=(TextBlock)XamlReader.Load(TextBlock);

我尝试在aViewModel中创建InlineCollection属性,然后在xaml中设置绑定,但TextBlock中的InlineCollection不可绑定,因为它不是DependencyProperty。答案是创建您自己的控件并使其成为DependencyProperty,这是一个不错的解决方法

虚拟机:

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);
string textBlock=@”;
textBlock=String.Concat(textBlock,例如NewValue.ToString(),“”);
infoBar.infoBarRunHolder.Child=(TextBlock)XamlReader.Load(TextBlock);

在您的ViewModel中,“格式化文本”使用的语法是什么?我正在将虚拟机改装为现有的应用程序,因此它尚未在虚拟机中定义。目前,我们构建了一系列运行对象,并将它们添加到TextBlock:TextBlock.Inlines.add(Run)。如果您“当前构建了一系列运行对象”,则表示您有一些已格式化的现有数据。存储此文本时,您当前使用的标记形式是什么?HTML、RTF、SGML或其他什么?它是诊断性的;我们从模型的深层获取信息并显示在调试窗格中。该信息没有存储任何标记。在您的ViewModel中,“格式化文本”使用的语法是什么?我正在将VM改装为现有应用程序,因此它尚未在VM中定义。目前,我们构建了一系列运行对象,并将它们添加到TextBlock:TextBlock.Inlines.add(Run)。如果您“当前构建了一系列运行对象”,则表示您有一些已格式化的现有数据。存储此文本时,您当前使用的标记形式是什么?HTML、RTF、SGML或其他什么?它是诊断性的;我们从模型的深层获取信息并显示在调试窗格中。该信息没有存储任何标记。