文本框在展开器控件内不换行

本文关键字:控件 换行 文本 | 更新日期: 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" ...