0

私は次のようなListViewを持っています:

<ListView x:Name="MyList" ItemsSource="{Binding Path=MyItems}">
  <ListView.ItemTemplate>
    <DataTemplate>
      <StackPanel>
        <TextBlock x:Name="Title" Text="{Binding Path=TitleCategory}"/>
        <TextBlock x:Name="Body" Text="{Binding Path=BodySummary}" Style="{StaticResource BodyTextStyle}"/>
      </StackPanel>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

そのTextBlockに適用するBodyTextStyleは、幅を600pxに設定し、FullScreenLandscapeではすべてが正常に表示されます。ただし、SnappedViewに切り替えると、画面幅が狭くなるため、テキストが途切れます。通常、幅は次のように設定します。

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="Body">
  <DiscreteObjectKeyFrame KeyTime="0" Value="300"/>
</ObjectAnimationUsingKeyFrames>

ただし、これによりランタイムクラッシュが発生します。これは、参照しているアイテムがItemTemplateにあるためだと思います。SnappedViewに入ったときにListViewのすべてのアイテムの幅を変更する正しい方法は何ですか?

4

1 に答える 1

1

私がサンプルとテンプレートで見たものから、推奨される方法は、異なるビュー状態に対して個別のListViewを提供し、あなたが行っていることと同様のことを試み、多くの戦いをしなければならないことによってそれを最適化しようとした後です。私はあきらめて、テンプレートが行うことを実行することにしました。手間を省き、スナップビューに別のListViewを使用し、ビューの状態が変化したときに両方のListViewの表示を切り替えるだけです。

また、あなたが正しいと思います。問題は、個別の名前スコープを持つテンプレートの名前スコープの問題に起因します。

于 2012-07-06T09:51:37.223 に答える