如何基于ListView Item Source属性操纵输出

时间:2019-04-27 19:07:43

标签: c# listview xamarin.forms

我正在将ListView ItemSource设置为List<T>,其中T是我的模型。我正在将此List<T>的某些属性绑定到XAML中的某些Label。现在,基于属性,我想将标签设置为某些文本。

例如,if (Property.IsCompleted == true),我可能想将ListView的“视图”单元格中的标签设置为“完成”,而不是“真”。

我希望这可以总结问题。我尝试了其他方法,但都无济于事。

这是我的ListView的项目显示方法:


          private void bookingLV_ItemAppearing(object sender, ItemVisibilityEventArgs e)
        {
            BookingsModel convert = (BookingsModel)e.Item;
            var select = convert.IsCompleted;
         if(select == true)
            {
                IsDone = "Completed";
            }
            IsDone = "Pending";

        }

我有一个名为IsDone的自定义属性:

  public string IsDone { get; set; }

这就是我如何在Xaml的ListView的视图单元中绑定IsDone

 <Label Text="{Binding IsDone}"></Label>

我希望能够基于我的模型对象的属性将“标签”的“文本”属性设置为某些文本。

1 个答案:

答案 0 :(得分:0)

在模型中创建一个只读属性,该属性返回基于另一个属性的值

public string IsDone 
{ 
  get
    {
       if (select) return "Completed";
       return "Pending";
    }
}

如果您使用的是INotifyPropertyChanged,则需要确保“ trigger”属性的设置程序针对这两个事件均触发PropertyChanged个事件

public bool selected { 
  get {
    ...
  }
  set {
    ...
    PropertyChanged("selected");
    PropertyChanged("IsDone");
  }
}