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 将宽度设置为 600 像素,并且在 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 回答