我尝试在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
,它就行了!