使用WPF实现日志查看器我寻求有关使用WPF实现控制台日志查看器的最佳方法的建议。它应符合以下标准:快速滚动100.000+行某些条目(如stacktraces)应该是可折叠的长项包裹列表可以按不同的标准(搜索,标签等)进行过滤在最后,它应该在添加新项目时继续滚动线元素可以包含某种添加格式,如超链接和出现计数器总的来说,我有一些想法,如FireBug和Chrome的控制台窗口。我玩这个但是我没有取得多大进展,因为...... - 数据网格无法处理不同的项目高度 - 滚动位置仅在释放滚动条后更新(这是完全不可接受的)。我很确定,我需要某种形式的虚拟化,并希望遵循MVVM模式。欢迎任何帮助或指示。
2 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
HighCore答案是完美的,但我想它缺少这个要求:“当最后,它应该在添加新项目时继续滚动”。
根据这个答案,你可以这样做:
在主ScrollViewer(DockPanel内)中,添加事件:
<ScrollViewer CanContentScroll="True" ScrollChanged="ScrollViewer_ScrollChanged">
转换事件源以执行自动滚动:
private bool AutoScroll = true; private void ScrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e) { // User scroll event : set or unset autoscroll mode if (e.ExtentHeightChange == 0) { // Content unchanged : user scroll event if ((e.Source as ScrollViewer).VerticalOffset == (e.Source as ScrollViewer).ScrollableHeight) { // Scroll bar is in bottom // Set autoscroll mode AutoScroll = true; } else { // Scroll bar isn't in bottom // Unset autoscroll mode AutoScroll = false; } } // Content scroll event : autoscroll eventually if (AutoScroll && e.ExtentHeightChange != 0) { // Content changed and autoscroll mode set // Autoscroll (e.Source as ScrollViewer).ScrollToVerticalOffset((e.Source as ScrollViewer).ExtentHeight); } }}
- 2 回答
- 0 关注
- 1692 浏览
添加回答
举报
0/150
提交
取消