Windows Phone列表框项目背景改变颜色即使它是明确设置

时间:2012-11-12 15:44:24

标签: xaml layout windows-phone-8

我正在寻找1)发生了什么,以及2)如何解决问题。

问题

如果ListBox项目高度高于2521,即使将背景明确设置为其他内容,它似乎也会将背景更改为黑色。

如何重现

获取下面的示例XAML文件,并在xaml.cs文件中添加以下内容:

DataContext = new List<int>() { 1 };

将TextBlock的高度更改为2522或更高。

示例代码不是我遇到问题的地方,但是这是一个演示错误的简单示例。我不打算使用尺寸为2522+的TextBlock:)

示例XAML文件

    <Grid x:Name="LayoutRoot" Background="Brown">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <phone:Pivot x:Name="pivot" Title="{Binding name}" Grid.Row="1" Foreground="White" Margin="10,0,0,0">
            <phone:PivotItem x:Name="mainPivot" Header="menu" Margin="0,0,20,0">
                <ListBox ItemsSource="{Binding}">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid Background="White">
                                <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                                    <TextBlock Height="2521" Text="some data" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontSize="22" Foreground="Purple"/>
                                </StackPanel>
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </phone:PivotItem>

        </phone:Pivot>

    </Grid>
</phone:PhoneApplicationPage>

说明

有些人对我的用户界面表示担忧。上面的代码是示例,而不是我的实际用户界面。没有性能问题,ListBox也不迟缓。除了背景改变颜色外,一切都按预期工作。

3 个答案:

答案 0 :(得分:1)

在WP7 TextBlocks had a height limit of 2048x2048中。我不确定这是否已在WP8中修复,但看起来你现在正在遇到同样的问题。考虑将文本拆分为小于2048像素的块或使用像ScrollableTextBlock那样为您执行此操作的块。

答案 1 :(得分:0)

不确定“为什么”,但在“什么”看来,网格是运行黑色背景的网格。我把网格取出来,它的行为......

    <phone:Pivot x:Name="pivot" Title="{Binding name}" Grid.Row="1" Foreground="White" Margin="10,0,0,0">
        <phone:PivotItem x:Name="mainPivot" Header="menu" Margin="0,0,20,0" >
            <ListBox ItemsSource="{Binding}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28" Background="White">
                            <TextBlock Height="2530" Text="some data" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontSize="22" Foreground="Purple"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </phone:PivotItem>

这对你有用吗?

答案 2 :(得分:0)

您可以将minWidth设置为列表框。这可能对你有帮助。

 <Grid x:Name="LayoutRoot" Background="Brown">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <phone:Pivot x:Name="pivot" Title="{Binding name}" Grid.Row="1" Foreground="White" Margin="10,0,0,0">
        <phone:PivotItem x:Name="mainPivot" Header="menu" Margin="0,0,20,0">
            <ListBox ItemsSource="{Binding}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid Background="White">
                            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                                <TextBlock Height="2521" Text="some data" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontSize="22" Foreground="Purple"/>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </phone:PivotItem>

    </phone:Pivot>

</Grid>