文本框在扩展器控件中不是换行符

时间:2014-06-13 20:15:35

标签: c# wpf

我在一个TextBox中有一个带有许多Expander的ItemsControl。

TextBox有很长的Text,但是它的文本没有换行,而是在ItemsControl上看到了一个我不想要的水平Scrollbar。我想要文本框上的水平滚动条。我不想要的事件,而不是Textobx中的文本应该总是包装和包装,并有一个垂直滚动条。

我该怎么做?

<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");
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

ListBox的默认模板包含ScrollViewer控件来展示您的商品。此ScrollViewer显示滚动条。

要禁用水平滚动条,请在ListBox上设置以下属性:

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" ...