En un previous question estaba intentando averiguar cómo vincular un ObservableCollection a un control para poder ver todas las cadenas y seleccionar todas las cadenas y copiarlas desde el control de contenido. Las respuestas a esa pregunta finalmente me dieron la apariencia (y aparentemente el comportamiento) que quería usando el siguiente XAML. (He intentado tanto un FlowDocumentReader y FlowDocumentScrollViewer - se comportan de la misma.)¿Por qué no puedo pegar texto copiado desde WPF FlowDocumentScrollViewer o Reader?
<Grid>
<FlowDocumentScrollViewer>
<FlowDocument >
<Paragraph>
<ItemsControl ItemsSource="{Binding ErrorMessages, Mode=OneWay}" />
<Run Text="{Binding /, Mode=OneWay}" />
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</Grid>
ErrorMessages es mi propiedad modelo de vista que devuelve un ObservableCollection < cadena>. Se une correctamente al ItemsSource y el < Ejecutar> elemento se une a cada cadena de la colección. Se ve bien, dura mucho tiempo. Esto estuvo tan cerca que marqué mi última pregunta como respondida, pero todavía tengo un problema.
botón derecho del ratón y un menú aparece con la Seleccionar Todos y opciones de copia. Utilizando Seleccionar todo, de hecho resaltar todo el texto, seleccionando Copia no hay errores, pero cuando voy a Bloc de notas (o Word, o TextPad etc. o un RTB en el formulario) y trato de pegar el texto, nada aparece alguna vez Como recién llegado a WPF, sospecho que estoy haciendo algo mal, pero no sé qué es. No existe el texto "sin sentido".
[Editar -junio 22 2011] Por otras razones he cambiado el código para usar un bloque de texto a través de una plantilla de elemento dentro de ItemsControl como se muestra a continuación, pero todavía no puedo copiar y pegar.
<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}" />
Puede inspeccionar el portapapeles (hay una clase ['Clipboard'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx) en .Net) justo después * Copiar * y comprobar si contiene texto y qué otros tipos de datos se copiaron. –
OK - Cuando capturo GetFormats(), muestra Xaml, ApplicationTrust, Text, UnicodeText, System.String, Rich Text Format. Cuando compruebo GetDataPresent (DataFormats.Text) y me aparece, aparece el mensaje "Got Text:" seguido del texto real del portapapeles en una variable clip_text seguido del clip_text.Length() Got Text: 4 donde no había nada entre Tengo texto: y el 4 estaba en la siguiente línea. ¿Qué significa eso? 4 caracteres no visualizables, uno de los cuales es una nueva línea?Los datos reales seleccionados y copiados fueron las tres cadenas Fake Error 1 Fake Error 2 Se agregó manualmente en InstrumentViewModel. – Tod