我还是 wpf 新手,所以请耐心等待。
我有一个
GroupBox
来处理我的日志记录。它的内部是用于滚动的 ScrollViewer
和用于包含日志记录的 TextBox
。我想要的是,在一定数量的行中,我想要 delete
行的最上面部分,以便文本框不会被所有日志信息淹没。我只是想知道是否有办法解决这个问题,或者我是否遗漏了一些信息。
<GroupBox Header="Logs" Grid.Row="0" Height="300" >
<ScrollViewer x:Name="LogScrollViewer" CanContentScroll="True"
HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
<TextBox x:Name="LogTextBox" IsReadOnly="True"
AcceptsReturn="True" TextWrapping="Wrap"/>
</ScrollViewer>
</GroupBox>
我确实尝试在 xaml.cs 中使用下面 Gemini 向我提出的解决方案,但它不断在 LogTextBox.Lines 返回错误 CS1061,我不知道我是否缺少任何依赖项,或者我做错了什么或者这从一开始就是一个错误的方法。
if (LogTextBox.LineCount > 300)
{
string[] lines = LogTextBox.Lines;
string[] trimmedLines = new string[300];
Array.Copy(lines, lines.Length - 300, trimmedLines, 0, 300);
LogTextBox.Lines = trimmedLines;
}
WPF
TextBox
具有属性 MaxLines,因此您可以限制最大行数。
这是具有此属性的代码示例:
<TextBox x:Name="LogTextBox" MaxLines="300" IsReadOnly="True"
AcceptsReturn="True" TextWrapping="Wrap"/>
但是如果你在
Height
上设置 TextBox
属性,那么 MaxLines
将被忽略,所以这是使用属性 Height
限制行数的第二种方法