Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 水平滚动条不显示';t出现在文本框中_C#_Wpf_Xaml_Textbox - Fatal编程技术网

C# 水平滚动条不显示';t出现在文本框中

C# 水平滚动条不显示';t出现在文本框中,c#,wpf,xaml,textbox,C#,Wpf,Xaml,Textbox,我有一个网格,在ScrollViewer中有一个文本框: <Grid DockPanel.Dock="Top"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <ScrollViewer&g

我有一个网格,在ScrollViewer中有一个文本框:

    <Grid DockPanel.Dock="Top">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ScrollViewer>
            <StackPanel Height="271" Width="258">
                <Label FontSize="15" Margin="10"> Suggestions </Label>
                <Expander x:Name="expander" Margin="10" />
            </StackPanel>
        </ScrollViewer>
        <GridSplitter Grid.Column="0" Width="5" />
        <ScrollViewer Grid.Column="1">
            <TextBox x:Name="textBox" AcceptsReturn="True"
                AcceptsTab="True" FontSize="15"
                VerticalScrollBarVisibility="Visible" 
                HorizontalScrollBarVisibility="Visible"
                TextWrapping="WrapWithOverflow" Language="en-US"
                SpellCheck.IsEnabled="True"/>
        </ScrollViewer>
    </Grid>

建议
即使我将HorizontalScrollBarVisibility设置为Visible,水平滚动条也不可见,并且当我键入超出文本框宽度的文本时,我无法滚动:


我觉得TextBox元素没有完全显示出来。我敢打赌滚动条在那里,如果不重新调整当前窗口的大小或在主窗口中向下滚动,您就无法看到它。

查看文本框的实现:

这似乎是正常的行为:当TextWrappWithOverflow为WrapWithOverflow时,水平滚动条不可见

基于此,显示TextBox水平滚动条的唯一可能方法是将TextWrapping设置为NoWrap

您希望通过外部ScrollViewer实现的解决方案(我认为)可能是:

<ScrollViewer Grid.Column="1" HorizontalScrollBarVisibility="Visible">
    <TextBox x:Name="textBox" AcceptsReturn="True"
        AcceptsTab="True" FontSize="15"
        VerticalScrollBarVisibility="Hidden" 
        HorizontalScrollBarVisibility="Hidden"
        TextWrapping="WrapWithOverflow" Language="en-US"
        SpellCheck.IsEnabled="True"/>
</ScrollViewer>


如果文本正在换行,水平条会显示吗?这不是包装的定义吗?要消除对滚动条的需要。。。。“linebreak”算法说它不能打断你的“dddddddddddddddddd”文本序列…但它不会导致文本框的宽度改变…因此不会以这种方式进行水平滚动。。。你说的东西需要一个边界来滚动“嘿,我想要你的内容包装”,所以它说“好吧,酷,然后我将在我的边缘停止它,包装它,垂直推,因为你不希望它水平通过我的边缘”…然后你在另一个ScrollViewer中扑通一声(文本框模板中已经内置了一个)那个外滚动浏览者在说“呃,你想让我和这个家伙做什么?你已经告诉我的孩子去处理了。”对吗?我也会很惊讶你的GridSplitter能正常工作。要么放弃包装,要么接受包装。哦,@tgeo部分正确,它向下推包装,因为外部scrollviewer是多余的。