【问题标题】:Metro C++/XAML ListView Snapped ItemMetro C++/XAML ListView 捕捉项目
【发布时间】:2012-07-05 22:03:05
【问题描述】:

我有一个如下所示的 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 中每个项目宽度的正确方法是什么?

【问题讨论】:

    标签: c++ xaml windows-runtime windows-store-apps winrt-xaml


    【解决方案1】:

    从我在示例和模板中看到的内容来看,推荐的方法似乎是为不同的视图状态提供一个单独的 ListView,然后尝试通过尝试做一些类似于你正在做的事情来优化它并且不得不战斗很多问题我决定放弃,做模板做的事情。 为自己省去麻烦,为快照视图使用单独的 ListView,并在视图状态更改时简单地切换两个 ListView 的可见性。

    另外我认为你是对的,问题来自具有单独名称范围的模板的名称范围问题。

    【讨论】:

    • 最终走这条路,对代码冗余并不完全满意,但在我找到更好的解决方案之前,这将不得不这样做 =\
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多