我有一個ListView的DataTemplate裏面的RichTextBox控件。這個想法是,我想動態地添加運行/ InlineUIElements /圖像等等在列表視圖中的綁定時間的富文本框。問題是沒有關於數據綁定或類似事件。我嘗試了RichTextBox的Loaded事件,但看起來WPF重用了控件,因此當我滾動時(錯誤順序放置錯誤的內容,因爲負載事件在滾動期間觸發),內容被搞亂了。我還應該提到通過手動將行添加到ListView.Items集合,在代碼隱藏中發生了與ListView的綁定。WPF/Windows 8應用程序DataTemplate Databind事件
相關標記
<ListView Background="#F7F7F7" HorizontalAlignment="Stretch" Foreground="Black" x:Name="chatPane" Grid.Row="1"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalContentAlignment="Stretch" SelectionMode="Multiple"
ItemTemplateSelector="{StaticResource messageTypeDataTemplateSelector}" SelectionChanged="ChatPane_OnSelectionChanged">
</ListView>
<common:MessageTypeDataTemplateSelector
TextMessageTemplate="{StaticResource TextMessage}"
EnterMessageTemplate="{StaticResource EnterMessage}"
ExitMessageTemplate="{StaticResource ExitMessage}"
TimestampMessageTemplate="{StaticResource TimestampMessage}"
ImageMessageTemplate="{StaticResource ImageMessage}"
x:Key="messageTypeDataTemplateSelector" />
<DataTemplate x:Key="TextMessage">
<Grid Grid.ColumnSpan="3" RowSpan="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width=".5*"/>
<ColumnDefinition Width="70*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding UserName}" Visibility="{Binding Source={StaticResource chatSettings}, Path=HideAvatars, Converter={StaticResource booleanToVisibility}}" FontWeight="Bold" TextAlignment="Right" Grid.Column="0" Width="150" />
<Image VerticalAlignment="Top" Source="{Binding AvatarUrl}" Visibility="{Binding Source={StaticResource chatSettings}, Path=ShowAvatars, Converter={StaticResource booleanToVisibility}}" Grid.Column="0" Width="60" Margin="0,0,10,0" />
<TextBlock Text=" : " Visibility="{Binding Source={StaticResource chatSettings}, Path=HideAvatars, Converter={StaticResource booleanToVisibility}}" Grid.Column="1" />
<RichTextBlock Loaded="FrameworkElement_OnLoaded" TextWrapping="Wrap" Grid.Column="2" />
</Grid>
</DataTemplate>
就這麼你知道,Windows 8商店應用程序不使用WPF。他們正在使用Windows運行時(RT),它不是WPF而不是Silverlight,儘管它們之間有一些相似之處。我知道這不會回答你的問題,但只是分享,因爲它可以在瀏覽MSDN文檔時派上用場。 –
你的FrameworkElement_OnLoaded方法是什麼樣的? –