如何在ListBox中生成多行文本(TextBox项)



我尝试在ListBox中创建多行。

所以,我读了这个问题,做了这个xaml:

<ListBox Grid.Row="1" x:Name="lbKeyPhrases" BorderBrush="Gray" 
      ItemsSource="{Binding  Templates}"                                         
      IsSynchronizedWithCurrentItem="True" 
      Focusable="True"                                                                   
      ScrollViewer.HorizontalScrollBarVisibility="Disabled"
      ScrollViewer.VerticalScrollBarVisibility="Auto"
      HorizontalContentAlignment="Stretch" Grid.ColumnSpan="2"                                         
      >
    <ListBox.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Add Word" Click="MenuItem_Click">
                <Image Source="/SomeProj.UI.Resources;component/PNGImages/ItemAdd.png"/>
            </MenuItem>
        </ContextMenu>
    </ListBox.ContextMenu>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <Border x:Name="brRow" BorderThickness="1" BorderBrush="LightGray" 
                        Background="WhiteSmoke"
                        HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                    <TextBox x:Name="tblbRow" 
                             Text="{Binding Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                             Tag="{Binding}" 
                             GotFocus="tblbRow_GotFocus"
                             AcceptsReturn="True"                                    
                             TextWrapping="Wrap" Margin="2"
                             Focusable="True"
                             Background="Transparent"
                             HorizontalAlignment="Stretch"
                             ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                             >
                        <TextBox.ContextMenu>
                            <ContextMenu>
                                <MenuItem Header="Remove Word"
                                          Click="MenuItem_Click_RemoveTemplate">
                                    <Image Source="/SomeProj.UI.Resources;component/PNGImages/ItemDel.png"/>
                                </MenuItem>
                            </ContextMenu>
                        </TextBox.ContextMenu>
                    </TextBox>
                </Border>
            </DockPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

但似乎,这对我来说并不管用。我使用TextBox而不是TextBlock,因为我需要编辑行。所以,我想如果文本行将非常大-它包装成多个。

和滚动没有偶极(但应该是)。

你能告诉我怎么做吗?

附言:Scroll似乎没有被处理,因为它来自另一个网格。

根据请求,我的评论作为回答:

当水平滚动条足够长,应该换行时,它会出现吗?包装没有发生,因为内容可以在ScrollViewer中任意缩放。换行是控件填充所有水平空间的次要功能,因此允许它滚动可以消耗无限的空间。

设置:

ScrollViewer.HorizontalScrollBarVisibility="Disabled"

在包含您的文本框(ListBox)的控件中应该可以防止这种行为。

@Joe是对的:上网格有ScrollView.HorizontalBarVisible:Auto,所以我把它改为Disable,它就行了!

最新更新