Windows phone 7 全景+;列表框,wp7,文本被截断,滚动不起作用

Windows phone 7 全景+;列表框,wp7,文本被截断,滚动不起作用,windows-phone-7,listbox,panorama-control,Windows Phone 7,Listbox,Panorama Control,我正在使用全景控件。在每个全景项目中,我都有一个列表框。列表框中有一堆文本块;原因是我正在显示很长的文本,从另一篇文章中,我发现wp7在显示长文本时有局限性 例如,我有两个对象定义如下 public class TextItem { public string Text { get; set; } } public class DisplayItem { public string Header { get; set; } public string FullHeader { get;

我正在使用全景控件。在每个全景项目中,我都有一个列表框。列表框中有一堆文本块;原因是我正在显示很长的文本,从另一篇文章中,我发现wp7在显示长文本时有局限性

例如,我有两个对象定义如下

public class TextItem {
 public string Text { get; set; }
}

public class DisplayItem {
 public string Header { get; set; }
 public string FullHeader { get; set; }
 public List<TextItem> TextItems { get; set; }
}
<controls:Panorama ItemsSource="{Binding}">
 <controls:Panorama.HeaderTemplate>
  <DataTemplate>
   <TextBlock Text="{Binding Header}" TextWrapping="Wrap"/>
  </DataTemplate>
 </controls:Panorama.HeaderTemplate>
 <controls:Panorama.ItemTemplate>
  <DataTemplate>
   <StackPanel Orientation="Vertical">
    <TextBlock Text="{Binding FullHeader}" TextWrapping="Wrap"/>
    <ListBox ItemsSource="{Binding TextItems}">
     <ListBox.ItemTemplate>
      <DataTemplate>
       <TextBlock Text="{Binding Text}"/>
      </DataTemplate>
     </ListBox.ItemTemplate>
   </StackPanel>
  </DataTemplate>
 </controls:Panorama.ItemTemplate>
</controls:Panorama>
公共类TextItem{
公共字符串文本{get;set;}
}
公共类显示项{
公共字符串头{get;set;}
公共字符串FullHeader{get;set;}
公共列表文本项{get;set;}
}
我要绑定到列表的xaml如下所示

public class TextItem {
 public string Text { get; set; }
}

public class DisplayItem {
 public string Header { get; set; }
 public string FullHeader { get; set; }
 public List<TextItem> TextItems { get; set; }
}
<controls:Panorama ItemsSource="{Binding}">
 <controls:Panorama.HeaderTemplate>
  <DataTemplate>
   <TextBlock Text="{Binding Header}" TextWrapping="Wrap"/>
  </DataTemplate>
 </controls:Panorama.HeaderTemplate>
 <controls:Panorama.ItemTemplate>
  <DataTemplate>
   <StackPanel Orientation="Vertical">
    <TextBlock Text="{Binding FullHeader}" TextWrapping="Wrap"/>
    <ListBox ItemsSource="{Binding TextItems}">
     <ListBox.ItemTemplate>
      <DataTemplate>
       <TextBlock Text="{Binding Text}"/>
      </DataTemplate>
     </ListBox.ItemTemplate>
   </StackPanel>
  </DataTemplate>
 </controls:Panorama.ItemTemplate>
</controls:Panorama>

但是,当我尝试滚动列表框时,所有数据都会正确绑定,它不会一直滚动到底。对我来说,结果是“滚动不起作用”和“文本被截断”

知道我做错了什么吗


作为旁注,我还发布了一个关于显示很长文本(即最终用户许可协议EULA)的问题。一个用户给了我一个链接,链接到他用来显示很长文本的控件。邮局在。当我使用该控件和/或方法存储长文本时,我得到了相同的效果

如果StackPanel中有一个列表框,框架将无法确定控件的高度以及是否应启用滚动

在DataTemplate中使用网格而不是StackPanel

<DataTemplate>
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="*" /> 
      <RowDefinition Height="auto" />
    </Grid.RowDefinitions>
    <TextBlock Text="{Binding FullHeader}" TextWrapping="Wrap"/>
    <ListBox ItemsSource="{Binding TextItems}" Grid.Row="1">
      <ListBox.ItemTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding Text}"/>
        </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>
  </Grid>
</DataTemplate>

上述内容将解决您眼前的问题,但您也应该解决设计决策,在全景图上包含大量文本。

全景图不用于显示大量文本。把全景图想象成杂志封面。你不会在封面上写一篇文章。你应该包括一个标题或图片,以吸引观众/用户在杂志中阅读更多内容。同样的原则也应适用于此。在panorma上设置内容(标题/标题或等效图像)将用户带到另一个页面,在那里他们可以阅读全部内容。

如果StackPanel中有一个列表框,框架无法确定控件的高度以及是否应启用滚动

在DataTemplate中使用网格而不是StackPanel

<DataTemplate>
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="*" /> 
      <RowDefinition Height="auto" />
    </Grid.RowDefinitions>
    <TextBlock Text="{Binding FullHeader}" TextWrapping="Wrap"/>
    <ListBox ItemsSource="{Binding TextItems}" Grid.Row="1">
      <ListBox.ItemTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding Text}"/>
        </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>
  </Grid>
</DataTemplate>

上述内容将解决您眼前的问题,但您也应该解决设计决策,在全景图上包含大量文本。

全景图不用于显示大量文本。把全景图想象成杂志封面。你不会在封面上写一篇文章。你应该包括一个标题或图片,以吸引观众/用户在杂志中阅读更多内容。同样的原则也应适用于此。在panorma上添加内容(标题/标题或等效图像)将用户带到另一个页面,在那里他们可以阅读完整内容。

感谢您的提示和帮助。但是,即使我转到另一个他们可以阅读全部内容的页面,显示长文本的问题仍然会出现。我喜欢使用panorama+listbox组合的原因是,它可以用一个内聚的UI显示内聚的内容。panorama和pivot UI控件可能是最吸引眼球的UI(比我在iPhone和Android上看到的UI控件/小部件要好)。我不知道这一点,但我认为wp7上的facebook应用程序可能使用了全景/透视控件,它们显示的文本/数据比我显示的要多。@user373312是的,facebook应用程序使用全景,但它不显示任何“很长的文本”。它只显示了几个类别中最新的项目,amd鼓励用户点击其他页面进行交互和进一步阅读。作为参考,在小屏幕设备上读取大量文本可能非常困难。另见,谢谢。这完全有助于产生效果,“它起作用了。”我来看看这个链接。谢谢你的提示和帮助。但是,即使我转到另一个他们可以阅读全部内容的页面,显示长文本的问题仍然会出现。我喜欢使用panorama+listbox组合的原因是,它可以用一个内聚的UI显示内聚的内容。panorama和pivot UI控件可能是最吸引眼球的UI(比我在iPhone和Android上看到的UI控件/小部件要好)。我不知道这一点,但我认为wp7上的facebook应用程序可能使用了全景/透视控件,它们显示的文本/数据比我显示的要多。@user373312是的,facebook应用程序使用全景,但它不显示任何“很长的文本”。它只显示了几个类别中最新的项目,amd鼓励用户点击其他页面进行交互和进一步阅读。作为参考,在小屏幕设备上读取大量文本可能非常困难。另见,谢谢。这完全有助于产生效果,“它很有效。”我来看看这个链接。WP7控件的最大大小是2048x2048像素。实际上,这么长的内容不属于手机应用程序。WP7控件的最大大小是2048x2048像素。事实上,这么长时间的内容不属于手机应用程序。