使用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 关注
- 1855 浏览
添加回答
举报
0/150
提交
取消
