0

パノラマコントロールを使用しています。各PanoramaItemの中に、ListBoxがあります。ListBoxは一連のTextBlockを保持します。その理由は、私が非常に長いテキストを表示しているためであり、別の投稿から、長いテキストを表示するときにwp7に制限があることがわかりました。

たとえば、次のように定義された2つのオブジェクトがあります。

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; }
}

List<DisplayItem>にバインドするxamlは次のとおりです。

<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)。ユーザーは、非常に長いテキストを表示するために作成したコントロールへのリンクを私に提供することで応答しました。投稿は、SilverlightTextBlockが保持できる文字数です。。そのコントロールやアプローチを使用して長いテキストを保存すると、同じ効果が得られます。

4

1 に答える 1

4

StackPanel内にListBoxがある場合、フレームワークはコントロールの高さ、およびスクロールを有効にする必要があるかどうかを判断できません。

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>

上記は当面の問題を解決しますが、パノラマに大量のテキストを含めるという設計上の決定にも対処する必要があります。
パノラマは、大量のテキストを表示することを目的としたものではありません。パノラマは雑誌の表紙のようなものだと考えてください。表紙には記事を含めません。雑誌内でもっと読むように視聴者/ユーザーを誘うために、見出しまたは画像を含めます。ここでも同じ原則を適用する必要があります。パノラマにコンテンツ(見出し/タイトルまたは同等の画像)を表示すると、ユーザーは別のページに移動して、コンテンツ全体を読むことができます。

于 2011-07-25T16:02:21.303 に答える