如何在 UserControl 中显示 ObservableCollection

2023-11-30

我是 WPF 新手,我发现了一些类似的问题,但不太清楚最后一部分。我有一个带有 ObservableCollection 的 ViewModel,其中包含错误消息。我想在表单上显示这些消息并允许用户选择和复制全部或部分消息。 (过去在 WinForm 应用程序中,我为此使用了 RichTextBox,但我不知道如何将其绑定到 WPF 中的集合。)

我通过以下 xaml 获得了想要的外观,但是没有内置的方法可以像使用 RichTextBox 那样进行选择和复制。有谁知道我应该使用哪个控件,或者是否有方法可以选择/复制所有 TextBlock 的内容,或者是否可以将其绑定到 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>

除非你有大量的消息转换器可能可行:

<TextBox IsReadOnly="True">
    <TextBox.Text>
        <Binding Path="Messages" Mode="OneWay">
            <Binding.Converter>
                <vc:JoinStringsConverter />
            </Binding.Converter>
        </Binding>
    </TextBox.Text>
</TextBox>
public class JoinStringsConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var strings = value as IEnumerable<string>;
        return string.Join(Environment.NewLine, strings);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 UserControl 中显示 ObservableCollection 的相关文章

随机推荐

  • 聚合物select2元件

    我正在尝试包装很棒的 select2 jquery 小部件 https github com ivaynberg select2 在聚合物元素中以便于重复使用 我能够正确初始化选择 但在初始化后遇到问题 具体来说 当单击选择将其打开时 在定
  • 使用 gmaps4rails 显示多边形

    红宝石新手在这里 尝试使用 gmaps4rails gem 顺便说一句 很棒的 gem 在谷歌地图上将点列表显示为多边形 任何基于下面的代码示例的建议将不胜感激 我可以看到地图的轮廓 但看不到地图 也没有多边形 更新 此代码已更新 问题已解
  • 如何阻止 VS Code 在按 Enter 键时自动选择第一个建议?

    每当我在 flutter 代码中输入 Widget 函数并按 Enter 键时 VS Code 都会自动选择第一个参数建议 当我实际上想要在下一行输入该参数时 该参数会在同一行上输入 有没有办法在顶部添加一个空建议 以便我必须先按向下箭头才
  • 我需要 ($("#flip").click slipToggle ) 在同一页面上使用相同的

    我有一个使用 XSl 代码从 XML 读取的常见问题解答页面 问题和答案的 div 将重复与 XML 中的记录数一样多 这是 XSL 代码
  • android - 内存不足问题

    在我的应用程序中 我正在从网络下载图像 为此 我第一次从网络下载图像 这些图像存储在 SD 卡中 下次 我会检查这些图像是否在 SD 卡中 如果是 则从 SD 卡获取 否则我将从网络下载 这些图像像列表一样显示 我反复 意味着连续向上 向下
  • 设备和模拟器上的 Android LinkedIn 集成错误

    我正在尝试使用此问题答案集成 linkedIn从 Android 应用程序发布 LinkedIn 消息但这个给定的示例 LITest 无法在设备上工作 它向我显示了一些错误 如下所示 12 19 19 36 30 489 ERROR And
  • ES6 Yield:第一次调用 next() 的参数会发生什么?

    考虑这段代码 function foo a console log Mul a return a 2 function process start next 1 var result start console log Pre proces
  • 如何从包含像素的数组创建 BufferedImage?

    我从以下位置获取像素BufferedImage使用该方法getRGB 像素存储在名为的数组中data 对数据数组进行一些操作后 我需要创建一个BufferedImage再次这样我就可以将它传递给一个模块 该模块将显示来自该数据数组的修改后的
  • 将向量传递给函数 C++

    我有一个 main cpp test h 和 test cpp gt 我试图传递我的向量 以便我可以在 test cpp 中使用它 但我不断收到错误 file main cpp int main vector
  • Mod 将规则重写为 Zeus 服务器规则 (Codeigniter)

    我即将上线由 Codeigniter 提供支持的网站 我想从网址中删除index php 而不是这样 http www mysite com index php controller 我得到这样的东西 http www mysite com
  • 创建多个(15+)HTTP 响应过滤器,继承与组合与注入

    首先是关于我想要实现的目标的一些背景故事 我正在创建一个自定义 HTTP 模块 其目的是拦截发送到多个 15 不同 ArcGIS REST Web 服务的消息 拦截的请求和 或响应将被剥离基于当前用户的任何受限信息 例如 返回多个层的调用可
  • 这在 JavaScript 中叫什么? ({名称,值}) => [重复]

    这个问题在这里已经有答案了 在 JavaScript 中 在这种情况下 const component name value gt span span 其中箭头函数的第一个参数与其成员分开 props gt name value 这个叫什么
  • Skybox OpenGL ES iPhone 和 iPad

    我需要创建一个虚拟旅游工具iOS 这是一个考古应用程序 用户可以在历史建筑内或参观考古发掘时打开它 不需要末日般的主观观点 只是一个天空盒 该应用程序将包含一个兴趣点 POI 列表 每个 POI 都有自己的天空盒 我想我可以使用OpenGL
  • BufferedImage 意外改变颜色

    我有以下代码 它创建灰度 BufferedImage 然后设置每个像素的随机颜色 import java awt image BufferedImage public class Main public static void main S
  • Android:在缩放后找到ImageView上的绝对点击位置(使用矩阵布局使用捏合缩放)

    我正在使用 Hello Android 第 3 版中的代码来实现捏合缩放功能 使用此功能后 捏合缩放工作正常 但缩放后我想获得图像视图上的绝对单击位置 这是我的代码 package org example touch import andr
  • Youtube上传api重复视频(获取正确的ID)

    当视频重复时 假设 v GgVH5fXXYSE 有没有一种方法可以使用重复的 id 找到 好 视频 应该有效的视频 的 videoid 所以用 GgVH5fXXYSE 我可以找到 eNqZgEgOfsw 谢谢 不幸的是 没有办法获取这些信息
  • 测试折叠上的 CV 和欠采样

    我对构建具有不平衡数据的 ML 分类器有点迷失 80 20 数据集有30列 目标是标签 我想预测主要课程 我正在尝试重现以下步骤 分割训练 测试数据 在列车组上执行 CV 仅在测试折叠上应用欠采样 在 CV 的帮助下选择模型后 对训练集进行
  • 如何在 XSLT 中进行分页

    我有以下 XSLT
  • Oracle 中将字符串日期转换为日期时间

    我怎样才能把这个字符串日期转换为oracle中的日期时间 2011 07 28T23 54 14Z 使用此代码会引发错误 TO DATE 2011 07 28T23 54 14Z YYYY MM DD HH24 MI SS 如何才能做到这一
  • 如何在 UserControl 中显示 ObservableCollection

    我是 WPF 新手 我发现了一些类似的问题 但不太清楚最后一部分 我有一个带有 ObservableCollection 的 ViewModel 其中包含错误消息 我想在表单上显示这些消息并允许用户选择和复制全部或部分消息 过去在 WinF