c++ - Metro C++/XAML ListView 捕捉项

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

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

最佳答案

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

此外,我认为您是对的,问题出在具有单独名称范围的模板的名称范围问题。

关于c++ - Metro C++/XAML ListView 捕捉项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11353182/

相关文章:

windows-runtime - C++Winrt如何在不终止程序的情况下抛出和处理异常

xaml - 如何在 XAML 中的 TextBlock 末尾添加空格? (Windows 10,UWP)

c# - 在 WinRT 中从 C# 解析 JSON

c++ - boost 异常的错误信息

c++ - 尽管项目很小,但 g++ 仍会生成大型二进制文件

c# - 在XAML中获得子控件的更聪明的方法是什么?

wpf - 如何在Powershell的xaml中使用相对路径

c++ - 如何使用一个方法作为另一个方法的参数?

c++ - 结合 boost unordered_map、bind 和 std::find_if

c# - 构建操作页面或资源