文本框在展开器控件内不换行
本文关键字:控件 换行 文本 | 更新日期: 2023-09-27 18:08:46
我有一个ItemsControl与许多扩展器在一个文本框。
TextBox有很长的文本,但它的文本没有行换行,而是我看到一个水平滚动条在ItemsControl上,我不想要的。我想要文本框上的水平滚动条。如果我不想要,文本框中的文本应该总是换行和换行,并有一个垂直滚动条。
我该怎么做呢?
<Window x:Class="ExpanderTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="768" Width="1024">
<Window.Resources>
<DataTemplate x:Key="NormalTemplate">
<Expander Margin="0" Header="{Binding FileName}" Background="Green">
<TextBox TextWrapping="Wrap" AcceptsReturn="True" IsReadOnly="True" Text="{Binding Content}" Margin="0"/>
</Expander>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding ErrorLogs}" HorizontalContentAlignment="Stretch" ItemTemplate="{DynamicResource NormalTemplate}" />
</Grid>
</Window>
public class MainViewModel : BaseViewModel
{
public MainViewModel()
{
GetErrorLogs();
}
private void GetErrorLogs()
{
for (int i = 0; i < 30; i++)
{
string content = new string('0', 500 * i + 1);
var e = new ErrorLogViewModel { Content = content, FileName = "ErrorLog " + i };
ErrorLogs.Add(e);
}
}
private ObservableCollection<ErrorLogViewModel> _errorLogs = new ObservableCollection<ErrorLogViewModel>();
public ObservableCollection<ErrorLogViewModel> ErrorLogs
{
get { return _errorLogs; }
set
{
_errorLogs = value;
this.RaisePropertyChanged("ErrorLogs");
}
}
}
ListBox
的默认模板包含一个ScrollViewer
控件来显示您的项目。这个ScrollViewer显示滚动条。
为了禁用水平滚动条,在ListBox
上设置以下属性:
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" ...