2
我們通過向TextBlock.Inlines添加一系列System.Windows.Documents.Run對象來爲TextBlock格式化文本。S1 4,MVVM:在TextBlock中使用內聯,如何綁定到ViewModel?
我們如何綁定ViewModel中的格式化文本以顯示在TextBlock中?
感謝您的任何意見...
我們通過向TextBlock.Inlines添加一系列System.Windows.Documents.Run對象來爲TextBlock格式化文本。S1 4,MVVM:在TextBlock中使用內聯,如何綁定到ViewModel?
我們如何綁定ViewModel中的格式化文本以顯示在TextBlock中?
感謝您的任何意見...
我試圖創造一個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);
在你的ViewModel是什麼語法用於「格式化文本」? – AnthonyWJones 2011-03-29 14:28:15
我正在將VM加裝到現有的應用程序中,因此它尚未在VM中定義。目前,我們構建了一系列運行對象並將它們添加到TextBlock:TextBlock.Inlines.Add(run)。 – Number8 2011-03-29 15:00:23
如果您「當前構建一系列運行對象」,這意味着您有一些已格式化的現有數據。存儲此文本時,您目前使用哪種形式的標記? HTML,RTF,SGML還是其他? – AnthonyWJones 2011-03-29 15:07:03