我使用的Windows Phone 7數據綁定的TextBlock運行在Silverlight/WP7
的Silverlight我想顯示在一個TextBlock大膽一些文本的第一部分,並以正常字體休息。完整的文字必須包裝。我希望粗體部分包含來自我的ViewModel中一個屬性的文本,以及包含來自不同屬性的文本的純文本。
TextBlock在與LongListSelector關聯的DataTemplate中定義。
我最初的嘗試是:
<TextBlock TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="{Binding Property1}" FontWeight="Bold"/>
<Run Text="{Binding Property2}"/>
</TextBlock.Inlines>
</TextBlock>
這種失敗在與壯觀無益 「AG_E_RUNTIME_MANAGED_UNKNOWN_ERROR」 運行。這是一個已知的問題,因爲Run元素不是FrameworkElement並且不能被綁定。
我的下一個嘗試是到位的佔位符,然後在代碼更新它們:(!是的,我絕望)
<TextBlock Loaded="TextBlockLoaded" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run FontWeight="Bold">Placeholder1</Run>
<Run>Placeholder2</Run>
</TextBlock.Inlines>
</TextBlock>
在後臺代碼:
private void TextBlockLoaded(object sender, RoutedEventArgs e)
{
var textBlock = (TextBlock)sender;
var viewModel = (ViewModel)textBlock.DataContext;
var prop1Run = (Run)textBlock.Inlines[0];
var prop2Run = (Run)textBlock.Inlines[1];
prop1Run.Text = viewModel.Property1;
prop2Run.Text = viewModel.Property2;
}
這似乎但因爲我使用LongListSelector,雖然項目被回收,但加載的代碼隱藏事件處理程序不會重新初始化運行,所以很快顯示錯誤的文本...
我看過使用LongListSelector的Linked事件(我已經用它來釋放列表中顯示的圖像),但是我看不到如何使用它重新初始化運行的文本屬性。
任何幫助表示讚賞!
+1。好問題,我也想知道。 – Stan 2011-03-11 01:56:50