【问题标题】:How to make multiline text at ListBox (TextBox item)?如何在 ListBox(TextBox 项)上制作多行文本?
【发布时间】:2016-04-08 07:11:33
【问题描述】:

我尝试在 ListBox 上创建多行行。

所以,我阅读了this question 并制作了这个 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 没有被处理(但应该被处理)。

你能告诉我,怎么做吗?

附:似乎 Scroll 没有被释放,因为它来自另一个 Grid。

【问题讨论】:

  • 您的 XAML 似乎工作正常...您确定没有其他东西(即样式)不允许您的 TextBox 换行吗?
  • @IlVic,在上层网格,ScrollViewer.Horizo​​ntalScrollBarVisibility="Auto",ScrollViewer.CanContentScroll="True"
  • 当水平滚动条变得足够长以至于应该换行时,是否会出现? (忽略我,注意到你有 ScrollViewer.Horizo​​ntalScrollBarVisibility="Disabled")
  • 我遇到了一个问题,即我针对 ScrollViewer 的样式缺少此 &lt;ScrollContentPresenter CanContentScroll="True"/&gt;。我会检查以确保不是这种情况。 CanContentScroll="False" 重现了这个确切的问题。
  • @Joe,当我设置大文本时,我有一个水平滚动......并且没有换行

标签: c# wpf xaml listbox


【解决方案1】:

根据要求,我的评论作为答案:

当水平滚动条变得足够长以至于它应该被换行时,它是否会出现?包装没有发生,因为内容可以在 ScrollViewer 中随心所欲地缩放。环绕是次要的控件填充所有水平空间,因此允许它滚动允许它消耗无限空间。

设置:

ScrollViewer.HorizontalScrollBarVisibility="Disabled"

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 太好了,我一定完全误读了您的代码,因为我以为我已经检查过并且看到您已经放置了 ScrollViewer.Horizo​​ntalScrollBarVisibility="Disabled"。很高兴我还是发表了评论!
    • @Joe,你可以自己写答案,我把它作为正确答案,因为你的建议对我有帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多