Windows 8 ScrollViewer 打破 TextBlock Wrap
Posted
技术标签:
【中文标题】Windows 8 ScrollViewer 打破 TextBlock Wrap【英文标题】:Windows 8 ScrollViewer breaks TextBlock Wrap 【发布时间】:2014-04-10 14:29:39 【问题描述】:我有一个 ListView,其中包含一个带有几个文本框的网格,并且列的宽度绑定到页面的 ActualWidth 属性。
问题是垂直滚动条放置在列表中最大的项目之后(没有对齐到页面的右侧)。如果我在 ListView 之前添加一个 ScrollViewer,则垂直滚动条位于我想要的位置(捕捉到页面的右侧),但是文本不再换行(跨越多行以适应屏幕上的所有文本) 但它一直在窗口范围之外。
这是具有文本换行功能的 xaml:
<Grid x:Name="detailsGrid" Margin="120,0,10,10" Grid.Row="1">
<tools:customListView ItemsSource="Binding Items, ElementName=pageRoot" SelectionMode="None" IsItemClickEnabled="True" Margin="5,5,0,5" HorizontalAlignment="Left" VerticalAlignment="Top" ItemClick="list_ItemClick">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Height" Value="Auto" />
<Setter Property="Width" Value="Auto" />
<Setter Property="MinWidth" Value="270"/>
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Border BorderThickness="Binding BorderThickness" BorderBrush="#cccccc" Margin="Binding BorderMargin">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Binding ActualWidth, ElementName=pageRoot"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image Width="32" MaxWidth="32" Height="32" MaxHeight="32" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="Binding Margin" Source="Binding ImageSource" Stretch="Fill" Visibility="Binding ImageVisibility" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" />
<TextBlock Grid.Column="1" Grid.Row="0" Text="Binding Title" TextWrapping="Wrap" FontWeight="Binding FontWeight" Style="Binding StatusStyle" />
<TextBlock Grid.Column="1" Grid.Row="1" Text="Binding Details" TextWrapping="Wrap" Foreground="StaticResource ListViewItemOverlaySecondaryForegroundThemeBrush" Visibility="Binding DetailsVisibility"/>
</Grid>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</tools:customListView>
</Grid>
这是具有正确对齐的滚动条但文本换行损坏的 xaml:https://gist.github.com/paulcsiki/10388526
我必须做什么才能在屏幕右侧获得滚动条并让文本换行正常工作?
【问题讨论】:
【参考方案1】:将此添加到您的ListView
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
【讨论】:
我将它们添加到 ListView 中,但 TextBlocks 在 ScrollViewer 中仍然没有换行。 你能把ActualWidth
改成Width
这里是当前代码:gist.github.com/paulcsiki/10388526/…。包装功能仍然无法正常工作。请记住,如果我删除滚动查看器,它会起作用。
我没有你的CustomListView
和一个快速的ViewModel
来绑定它。如果你删除ScrollViewer
,你能给我看一张照片吗?以上是关于Windows 8 ScrollViewer 打破 TextBlock Wrap的主要内容,如果未能解决你的问题,请参考以下文章
ScrollViewer中的Silverlight Canvas大小调整
如何增加 WPF ScrollViewer 中的滚动条宽度?