【问题标题】:Xamarin Forms ListView hide blank rows in cellXamarin Forms ListView 隐藏单元格中的空白行
【发布时间】:2017-09-27 00:56:37
【问题描述】:

我有以下 XAML 用于 ListView 中的自定义单元格(归结为一个简单的示例)。

<ListView x:Name="___drives" HasUnevenRows="True">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout>
                    <Label Text="{Binding Address}" FontAttributes="Bold" />
                    <Label Text="{Binding Scheduled}" />
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

在代码隐藏中,我将 Drive 对象的 ObervableCollection 绑定到 ListView。 Drive 对象定义如下。它扩展了实现 INotifyPropertyChanged 接口的 ModelBase(未显示的详细信息,但都是样板文件)。

public class Drive : ModelBase
{
    private string _address;
    private string _scheduled;

    public string Address
    {
        get { return _address; }
        set { if (_address != value) { _address = value; OnPropertyChanged("Address"); } }
    }
    public string Scheduled
    {
        get { return _scheduled; }
        set { if (_scheduled != value) { _scheduled = value; OnPropertyChanged("Scheduled"); } }
    }
}

有时计划为空。有没有办法让 ViewCell 在值为 null 时不显示 Scheduled 属性的空行?

下图是 Scheduled 没有值时的结果(包含更多字段,但您明白了)。我画了红框以显示空白行。我想让 DistanceToMe 向上移动并占据空白行的空间。

【问题讨论】:

  • 你想要什么来代替空行?您不能简单地检查value 是否为null,如果是,请将_scheduled 设置为在您的具体情况下合理的值吗?
  • 不,我希望显示折叠,因此不显示空行。我已更新问题以显示我需要完成的工作。
  • 如果标签可用,您可以使用 IsVisible 属性。我知道它是用于按钮的。如果可用,您可以在 ViewModel 上拥有一个布尔属性,当 Scheduled 为 null 时该属性设置为 false。例如stackoverflow.com/a/33751434/6198927
  • 您可以将 Address 和 Scheduled 结合起来,只需要一个标签。 OR 正如@EstebanVerbel 提到的,为什么不根据Scheduled 的值绑定标签可见性?
  • @Verbel,成功了,谢谢!

标签: xaml xamarin xamarin.forms


【解决方案1】:

如果标签可用,您可以使用 IsVisible 属性。当 Scheduled 为空时,您可以在 ViewModel 上设置一个布尔属性,该属性设置为 false。 For example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-27
    • 2019-04-19
    • 2013-01-26
    • 2017-12-11
    • 1970-01-01
    • 2019-01-30
    • 2012-08-14
    • 1970-01-01
    相关资源
    最近更新 更多