Je suis nouveau sur WPF et j'ai trouvé des questions similaires mais je n'arrive pas à comprendre la dernière partie. J'ai un ViewModel avec un ObservableCollection qui contient des messages d'erreur. Je veux les afficher sur le formulaire ET permettre à l'utilisateur de sélectionner et de copier tout ou partie des messages. (Dans le passé, dans les applications WinForm j'ai utilisé un RichTextBox pour cela, mais je n'arrive pas à comprendre comment lier un à la collection dans WPF.)Comment afficher ObservableCollection <string> dans un UserControl
J'ai eu le regard que j'avais après avec le xaml suivant, mais il n'y a pas de façon intégrée de sélectionner et de copier comme je le pourrais avec un RichTextBox. Est-ce que quelqu'un sait quel contrôle je devrais utiliser ou s'il y a moyen de permettre de sélectionner/copier le contenu de tous les TextBlocks, ou un moyen de lier cela à un 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>
[Modifier] @Andrey Shvydky - Cela ne rentre pas dans un commentaire. Il m'a fallu un certain temps pour trouver la syntaxe appropriée (en particulier le /, chose) mais finalement je me suis retrouvé avec la syntaxe du document de flux ci-dessous. Il semble correct sur le formulaire et semble d'abord soutenir tout/copier. Mais quand je colle après un tout sélectionner/copier rien ne se montre jamais. Quelqu'un sait pourquoi?
<Grid Margin="6">
<FlowDocumentScrollViewer>
<FlowDocument >
<Paragraph>
<ItemsControl ItemsSource="{Binding ErrorMessages, Mode=OneWay}" />
<Run Text="{Binding /, Mode=OneWay}" />
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</Grid>
Il m'a fallu un certain temps pour comprendre la syntaxe correcte (en particulier le /, mais finalement je suis venu avec FlowDocument> FlowDocumentScrollViewer> –
Tod
FlowDocument ne supporte pas la liaison. dans ce cas, vous devez générer le document dans le code et l'affecter au document Cela est très similaire à l'approche de RichTextBox dans WinForms Bien sûr, vous pouvez utiliser ItemControl aussi, mais FlowDocumentReader est le moyen simple d'obtenir Selive. ect/Copier la fonctionnalité. –
Je voulais supprimer mon commentaire ici. C'était trop difficile à lire et tout ne cadrait pas alors j'ai ajouté une modification à mon message original. Je ne me suis pas rendu compte que FlowDocument ne prenait pas directement en charge la liaison directement, ce que je trouve un peu étrange car l'élément prend en charge la liaison. Basé sur votre suggestion je l'ai l'air très bien, je ne peux pas coller les résultats et je ne sais pas pourquoi. Je peux * tout sélectionner *, et * copier * et il semble fonctionner, mais quand je * coller * rien ne s'affiche. –
Tod