【发布时间】: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