Windows Phone 8.1(XAML)。 ListView中的奇怪文本切割错误(有一些条件)

时间:2014-10-29 12:33:52

标签: xaml listview pivot windows-phone-8.1 textblock

以下XAML页面标记

<Page
    x:Class="XXXX.TestPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <Pivot Title="Title0">
            <PivotItem Header="Header0">
                <ListView SelectionMode="Multiple">
                    <ListViewItem>
                        <TextBlock 
                            Text="0123456 0123456 0123456 01234 0123456" 
                            TextWrapping="WrapWholeWords"
                            FontSize="24"/>
                    </ListViewItem>
                </ListView>
            </PivotItem>
        </Pivot>
    </Grid>
</Page>

导致奇怪的文字切割错误(两个数字被切断,红色箭头是我的): text cutting bug

在Windows Phone 8.1模拟器(WVGA,512MB,4英寸,480x800)下测试。

必需条件:ListView with SelectionMode="Multiple"Pivot控件。这意味着如果我将SelectionMode更改为其他值,或者删除ListView并将TextBox放在PivotItem内部,或者删除Pivot并将ListView放在Grid内 - 该错误将消失。

有谁可以解释这个错误的原因以及如何修复它?

1 个答案:

答案 0 :(得分:1)

这是预期的行为。

相反,请考虑以下XAML:

<Page.BottomAppBar>
    <CommandBar>
        <AppBarToggleButton Icon="Favorite" Checked="AppBarToggleButton_Checked" Unchecked="AppBarToggleButton_Unchecked" />
    </CommandBar>
</Page.BottomAppBar>

<Grid>
    <Pivot Title="Title0">
        <PivotItem Header="Header0">
            <ListView x:Name="MyListView" Background="Blue">
                <ListViewItem>
                    <TextBlock 
                        Text="0123456 0123456 0123456 01234 0123456" 
                        TextWrapping="WrapWholeWords"
                        FontSize="24" />
                </ListViewItem>
                <ListViewItem>
                    <TextBlock 
                        Text="0123456 0123456 0123456 01234 0123456" 
                        TextWrapping="WrapWholeWords"
                        FontSize="24" />
                </ListViewItem>
                <ListViewItem>
                    <TextBlock 
                        Text="0123456 0123456 0123456 01234 0123456" 
                        TextWrapping="WrapWholeWords"
                        FontSize="24" />
                </ListViewItem>
            </ListView>
        </PivotItem>
    </Pivot>
</Grid>

带有相应的代码隐藏:

private void AppBarToggleButton_Checked(object sender, RoutedEventArgs e)
{
    MyListView.SelectionMode = ListViewSelectionMode.Multiple;
}

private void AppBarToggleButton_Unchecked(object sender, RoutedEventArgs e)
{
    MyListView.SelectionMode = ListViewSelectionMode.None;
}

Screenshot

切换选择复选框不会导致重新计算列表框内容宽度。