作为 WPF 中的日志的只读 TextBox 的有效替代方案

C R*_*son 1 c# wpf logging

我的应用程序具有数据绑定只读TextBox功能,作为捕获和显示其“记录的”活动的手段。每次要记录某些内容时,都会将其连接到绑定字符串。这对于有限数量的记录文本来说足够有效,但随着文本数量的增加,它(可以理解)会陷入困境。我在之前的问题中看到了建议:Efficient live log-viewer in WPFWhat is a fast way to render a log view in WPF? 使用ListBox. 我可以做到这一点,但我会失去一个很好的功能 - 允许用户选择和复制任意文本块。还有其他解决办法吗?

P.M*_*the 6

您可以使用 aListbox并允许用户使用 some 复制部分日志ItemTemplate

<ListBox Name="viewList">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Mode=OneWay}" IsReadOnly="True"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

然后用一些 ObservableCollection 填充它:

ObservableCollection<string> mvList = new ObservableCollection<string>();
viewList.ItemsSource = mvList;
Run Code Online (Sandbox Code Playgroud)

很高兴知道:ListBox自动实现一些虚拟化,以确保在很长的列表中具有良好的性能。点击这里了解更多详情