Tod*_*Tod 6 wpf copy-paste flowdocument flowdocumentscrollviewer flowdocumentreader
在上一个问题中,我试图找出如何将ObservableCollection绑定到控件,这样我就可以看到所有字符串并选择所有字符串并从内容控件中复制它们.这个问题的答案最终通过使用以下XAML得到了我想要的外观(看似行为).(我尝试了FlowDocumentReader和FlowDocumentScrollViewer - 它们的行为相同.)
<Grid>
<FlowDocumentScrollViewer>
<FlowDocument >
<Paragraph>
<ItemsControl ItemsSource="{Binding ErrorMessages, Mode=OneWay}" />
<Run Text="{Binding /, Mode=OneWay}" />
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)
ErrorMessages是我的ViewModel属性,它返回一个ObservableCollection <string>.它正确绑定到ItemsSource,<Run>元素绑定到集合中的每个字符串.看起来不错,持续很长时间.这是如此接近我标记我的最后一个问题,但我仍有一个问题.
我右键单击,菜单显示" 选择所有"和" 复制"选项.使用全选,确实突出显示所有文本,选择复制问题没有错误,但当我转到NotePad(或Word,或TextPad等或表格上的RTB)并尝试粘贴文本时,没有任何显示.作为WPF的新手,我怀疑我做错了什么,但我不知道它是什么.那里没有"看不见"的文字吗?
[编辑 - 2011年6月22日]由于其他原因,我已经通过ItemsControl中的ItemTemplate更改了代码以使用TextBlock,如下所示,但我仍然无法复制和粘贴.
<DataTemplate x:Key="StringCollection">
<TextBlock TextWrapping="Wrap" Text="{Binding}" TextAlignment="Left"/>
</DataTemplate>
<!--... now down in the ItemsControl-->
<ItemsControl ItemsSource="{Binding ReceivedData, Mode=OneWay}"
ItemTemplate="{StaticResource StringCollection}" />
Run Code Online (Sandbox Code Playgroud)
<Run>元素绑定到集合中的每个字符串。
它只应该绑定到当前元素(如果有的话)。
无论如何,如果您只有 ItemsControl,那么您的文档实际上根本不包含任何文本。为什么?因为文档内的任何 UIElement 都会自动包裹在BlockUIContainer或中InlineUIContainer,并且不再被视为文本。
一般来说,内容被复制为 XAML、RTF、UnicodeText 和文本(我可以观察这些,但可能还有其他格式),您可以尝试Runs在文档中放置一些内容,它们的文本应该被正确复制并Clipboard.GetText()应该返回它们的内容。
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |