【发布时间】:2011-06-14 16:22:54
【问题描述】:
我是 WPF 的新手,我发现了一些类似的问题,但不能完全弄清楚最后一部分。我有一个带有 ObservableCollection 的 ViewModel,其中包含错误消息。我想在表单上显示这些并允许用户选择和复制全部或部分消息。 (过去在 WinForm 应用程序中,我为此使用了 RichTextBox,但我不知道如何将一个绑定到 WPF 中的集合。)
我使用以下 xaml 获得了我想要的外观,但没有像使用 RichTextBox 那样选择和复制的内置方法。有谁知道我应该使用哪个控件,或者是否有办法启用选择/复制所有 TextBlocks 的内容,或者将其绑定到 RichTextBox 的方法?
<Grid Margin="6">
<ScrollViewer VerticalScrollBarVisibility="Auto" Height="40" Grid.Column="0" Margin="6">
<ItemsControl ItemsSource="{Binding ErrorMessages}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Mode=OneWay}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
[编辑] @Andrey Shvydky - 这不适合评论。 我花了一段时间才弄清楚正确的语法(尤其是 /, 东西),但最终我得到了如下所示的流文档语法。它在表单上看起来是正确的,起初似乎支持全选/复制。但是当我在全选/复制后粘贴时,什么都没有出现。有人知道为什么吗?
<Grid Margin="6">
<FlowDocumentScrollViewer>
<FlowDocument >
<Paragraph>
<ItemsControl ItemsSource="{Binding ErrorMessages, Mode=OneWay}" />
<Run Text="{Binding /, Mode=OneWay}" />
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</Grid>
【问题讨论】:
标签: wpf richtextbox observablecollection copy-paste textblock