我的项目有下一个问题。
我必须将AbstractMargin
添加到AvalonEdit
控件中以创建一些书签/断点。
当我将AvalonEdit
控件放入ScrollViewer
时,AbstractMargin
滚动并且正常工作。
的 BUT!
当我现在打开一些文档,特别是BIG时,ScrollViewer
导致内存泄漏。内存的使用呈指数级增长,最终导致我的应用程序崩溃。
(ScrollViewer
- 使用450MB RAM,没有ScrollViewer
160MB RAM只打开1个小文件!)
当我删除ScrollViewer
并仅使用从AvalonEdit控件滚动时,我的AbstractMargin
不会滚动。
你可以帮帮我 - 我怎么能用额外的余量滚动avalon ......
...
<DataTemplate >
<ScrollViewer
Background="Transparent"
VerticalScrollBarVisibility="Visible"
HorizontalScrollBarVisibility="Auto"
PreviewMouseWheel="ScrollViewer_PreviewMouseWheel"
>
<avalonEdit:TextEditor
x:Name="TextEditor"
Document="{Binding DokumentTekstowy, UpdateSourceTrigger=PropertyChanged}"
IsModified="{Binding Edytowany, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding TylkoDoOdczytu}"
...
在Code Behind中我正在添加保证金
t.TextArea.LeftMargins.Insert(0, z);
其中z是
public class ZakladkaMargines : AbstractMargin
{
protected override HitTestResult HitTestCore(PointHitTestParameters hit)
{
return new PointHitTestResult(this, hit.HitPoint);
}
/// <inheritdoc/>
protected override Size MeasureOverride(Size availableSize)
{
return new Size(20, 00);
}
protected override void OnRender(DrawingContext drawingContext)
{
...
}
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
...
}
结果是我可以用我的边距滚动avalon,但是当打开大文档时会产生很多Rect和其他visualtext对象,内存泄漏,应用程序崩溃。
如果我删除ScrollViewer
并使用
<avalonEdit:TextEditor
...
VerticalScrollBarVisibility="Visible"
HorizontalScrollBarVisibility="Auto"
>
没有内存泄漏,性能良好,但我增加的余量不会滚动。