【问题标题】:Getting ViewCell content in ListView.ItemSelected在 ListView.ItemSelected 中获取 ViewCell 内容
【发布时间】:2015-09-24 21:50:13
【问题描述】:

我在 XAML 中遇到了 ListView 的问题。 我尝试通过打开动画来实现 ExpandableList。为此,我想使用 ListView 和 StackLayout。

在 ItemSelected 事件中,我想向 stacklayout 添加值,然后增加动画的高度。但是如何获得对 ViewCell 的引用?

还有,有没有办法获得计算出的 stacklayout 的高度并将 LayoutTo 用于这个值?

【问题讨论】:

    标签: c# xamarin.forms


    【解决方案1】:

    IsSelected 属性放在构成ItemsSourceItemsSource 的任何类上并在ItemSelected 处理程序中将其值设置为true 可能更容易。然后您可以将ViewCell 子类化并响应该类中IsSelected 的更改。然后将您的ViewCell 子类的实例放入您的ListViewItemTemplate

    这种方法的主要优点是更好的封装——而不是从您的ListView 修改ViewCell,您的ViewCell 将自行更新。它还使您不必了解ListView 的内部工作原理。

    查看chapter 19 of Charles Petzold's book (PDF),了解有关使用ListViews 和ViewCells 的大量有用信息。

    【讨论】:

    • 谢谢。但我想,在这种情况下,我需要一个在 Xamarin.forms 中找不到的可绑定 StackLayout(如 WP ItemsControl)。
    • @Matt 如果您提前知道 StackLayout 的可能内容,您可以包含它们并将它们的 IsVisible 属性绑定到布尔值。如果您需要在 ItemSelected 处理程序的 StackLayout 中添加任意数量的项目,您还可以选择在 ViewCell 的代码隐藏中创建和添加项目。或者您可能对 XLab 的 RepeaterView 感兴趣:github.com/XLabs/Xamarin-Forms-Labs/wiki/RepeaterView
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多