【问题标题】:WinRT ListView and ExpanderView issuesWinRT ListView 和 ExpanderView 问题
【发布时间】:2014-07-08 20:40:53
【问题描述】:

在我认为 Windows Phone 工具包 ExpanderView 成功移植到 WinRT 之后,我注意到它并没有 100% 正常工作。

这是我想要做的:-

我有一个 ListView,其中 ItemsSource 是数据绑定的,在这个 ListView 的 ItemTemplate 中有一个 ExpanderView 我移植???!!!这个想法是,当我点击 ListView 项目时,我希望展开器视图展开。

这就是说,但是当 ExpanderView 展开时,它会与下一个 ListView 项目重叠,即 ListViewItem 高度没有改变。为什么我真的不知道。一直在尝试我想出的所有可能的想法来解决这个问题,但徒劳无功:(

谁能帮助我并引导我朝着正确的方向前进?

下面是一个简单示例的链接(包含所有必要代码的 VS 项目)来演示问题 Simple Universal App to demo the problem

提前致谢

【问题讨论】:

  • 我在您的演示中注意到您的ExpanderViewItemTemplate 具有ListViewItem 的基本元素。是否有一个原因?你试过没有它吗?
  • @Nate 我认为这是一个错字。再次感谢
  • 我不认为它是真的。我检查了 WPToolkit 代码,那里是一样的。
  • @ajitsunny 询问“我也在尝试相同的代码并面临多个错误。它占用了更多内存。在 ExpanderView 中加载大约 200 多条记录后应用程序崩溃。你能将你的代码分享给 ajit。 net2 在 gmail com,以便我可以查看并确定问题。”
  • @DreamNet 你能提供最终的解决方案吗?您问题中的链接不再有效

标签: windows-runtime winrt-xaml win-universal-app


【解决方案1】:

在很多地方都有动画正在改变布局。这些动画的 UI 线程非常繁重,因此需要将属性 EnableDependentAnimations 设置为 True。您可以通过here 了解更多信息。您可能需要进入样式并手动更改 VisualStates 以进行此更改。一个这样的例子是:

在您的 ExpanderResource.xaml 中:

<VisualStateGroup x:Name="ExpansionStates">
    <VisualStateGroup.Transitions>
        <VisualTransition From="Collapsed"
                          GeneratedDuration="0:0:0.15" To="Expanded">
            <Storyboard>
                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" Storyboard.TargetName="ItemsCanvas" EnableDependentAnimation="True">
                    <EasingDoubleKeyFrame EasingFunction="{StaticResource QuadraticEaseOut}" KeyTime="0:0:0.00" Value="0" />
                    <EasingDoubleKeyFrame x:Name="CollapsedToExpandedKeyFrame" EasingFunction="{StaticResource QuadraticEaseOut}" KeyTime="0:0:0.15" Value="1" />
                </DoubleAnimationUsingKeyFrames>
            </Storyboard>
        </VisualTransition>
    </VisualStateGroup.Transitions>
</VisualStateGroup>

请注意,DoubleAnimationUsingKeyFrames 定位 (FrameworkElement.Height) 需要 EnableDependentAnimations="True",因为这会影响布局。

这不是该文件中唯一需要修复的地方。此外,我认为它不会解决您所有的布局问题。它会得到扩展布局的属性。

【讨论】:

  • 谢谢老兄,这让我很开心。即使动画有点刺耳,这个属性也完成了工作。经验教训。
【解决方案2】:

确保您使用stackpanel 作为您的面板。

<ListView>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

祝你好运!

【讨论】:

  • 对不起,这无济于事,您可以在我的示例中看到我有这段代码但它不起作用:(
  • 哦,很遗憾听到这个消息,是那个项目不起作用还是 ExpanderView 那个?项目一设置得非常快,因此它可能无法正常工作,因为我没有像我希望的那样对其进行测试。无论如何,如果可以的话,我会重新发送 ExpanderView _
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多