Je TENTATIVE la création d'une propriété InlineCollection dans aViewModel, puis définissez la liaison dans le XAML, mais le InlineCollection dans TextBlock n'est pas bindable, puisqu'il n'est pas un DependencyProperty. La réponse to this question montre créer votre propre contrôle et en faire un DependencyProperty qui est une bonne solution de contournement.
VM:
private InlineCollection inlineCollection;
public InlineCollection TextBlockInlineCollection {
get
{
return inlineCollection;
}
set
{
inlineCollection = value;
NotifyPropertyChanged("TextBlockInlineCollection");
}
}
XAML: // ne fonctionne pas
Vous pouvez également créer TextBlock dynamiquement dans le code en utilisant la XamlReader: exemple:
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);
En votre ViewModel quelle syntaxe est utilisée pour le "texte formaté"? – AnthonyWJones
Je suis en train de convertir la machine virtuelle en une application existante, donc elle n'est pas encore définie dans la machine virtuelle. Actuellement, nous construisons une série d'objets Run et les ajoutons au TextBlock: TextBlock.Inlines.Add (run). – Number8
Si vous "créez actuellement une série d'objets Run", cela signifie que certaines données existantes sont formatées. Quelle forme de balisage utilisez-vous actuellement lorsque vous stockez ce texte? HTML, RTF, SGML ou autre chose? – AnthonyWJones