1

私のアプリには、テキスト ブロック アイテムを含むスタック パネルを含むリスト ボックスがあります。テキスト ブロック アイテムには、テキスト ブロック アイテムが表示範囲外にスライドしないように、テキスト ラッピングまたはテキスト トリミング プロパティがあります。

私の知る限り、テキストの折り返しとテキストのトリミングのプロパティには、改行を挿入するための固定幅が必要です。このため、タイトル (Width="456") と説明 (Width="432") に固定幅を設定しました。

<ListBox x:Name="CategoryList" ItemsSource="{Binding}">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
        <StackPanel>
          <TextBlock 
            Style="{StaticResource PhoneTextLargeStyle}"
            Text="{Binding Name}" 
            TextTrimming="WordEllipsis"                                    
            Width="456"                                    
          />
          <TextBlock 
            Style="{StaticResource PhoneTextSubtleStyle}"
            Margin="12,-6,12,0" 
            Text="{Binding ContentDescription}"  
            TextWrapping="Wrap"                                                            
            Width="432"                                    
          />
        </StackPanel>
      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

今の問題は、電話を回すと、水平モードの固定幅が小さすぎることです。デバイスの幅に応じて固定幅の代わりに幅を置く方法はありますか?

スクリーンショット: ここに画像の説明を入力

4

1 に答える 1

1

一般に、XAML は固定幅/高さ (「全体」ページ (100%)) を使用することは決して良い考えではありません。XAML はこの作業を行うように設計されているためです。さまざまな画面とサイズ。

したがって、固定幅を使用して sth を表示するとします。ページ全体で、何かが間違っていることを示す非常に良い指標です。

あなたの場合、StackPanels の使い方が間違っています。StackPanels は、サイズが向きの方向に制限されないように設計されています。これは、向きが水平に設定されている StackPanel の幅が無限に大きくなる可能性があり、向きが垂直に設定されている SP の高さが制限されないことを意味します。

ここで、これが問題につながります。高さが無限に拡大する要素(2つのスタックパネル)で、幅が無限に拡大する要素を使用しました。いくつかのトリックでサイズを制限することもできますが (たとえば、データ バインディングによってこれを実現できます)、これはすべきことではありません。

親の StackPanel では何もスタックしていないので、他のパネル/コンテナに置き換える(または単に削除する)と、問題はなくなります。

<DataTemplate>
 <!-- If you need more child elements uncomment the following line -->
 <!-- <Grid> -->
 <StackPanel Margin="0,0,0,17">
  <TextBlock ... />
  <!-- no need to set width on the following textblock -->
  <TextBlock ... TextWrapping="Wrap" />
 </StackPanel>
 <!-- </Grid> -->
</DataTemplate>
于 2013-12-08T14:35:25.290 に答える