Xamarin表单ListVew绑定 - 将ViewCell标签绑定到方法

时间:2018-06-05 13:55:39

标签: listview xamarin.forms binding

我正在使用XVMrin Forms使用MVVM方法并且运行良好。

我需要为现有ListView添加一项功能,以便在绑定值为特定值时显示文本。

这是生成描述的单元格

   <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout>
                    <Label Text="{Binding Description}"  x:Name="lblDescription" 
               Style="{DynamicResource ListItemTextStyle}" />
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>

有什么方法基本上只显示标签是以下函数是真的(这可能在视图模型或代码后面)例如:

private bool IsDescriptionOk(string description)
    {
       //Look up description possibly in another lookup list
    }

id想要将visible绑定到方法,如:

Visible="{Binding IsDescriptionOk}"

但是在列表视图中,如果有意义,id需要传入项索引吗?

2 个答案:

答案 0 :(得分:1)

我想可以有多种方法来解决这类问题。其中一个可能是使用IValueConverter。像这样:

<ViewCell>
    <StackLayout>
        <Label
            Text="{Binding Description}"
            Style="{DynamicResource ListItemTextStyle}"
            IsVisible="{Binding Description, Converter="{StaticResource ItemStatusToVisiblityConverter}" />
    </StackLayout>
</ViewCell>

但是,我认为List应仅包含可见项,否则您可能会有多个空ListItems

答案 1 :(得分:0)

private string _description = null;

public string Description {
  get {
    if (_description == null) {
      // method to fetch/build description 
      _description = GetDescription();
    }
    return _description;
  }

public bool IsDescriptionOK {
  get {
    if ((Description == "Online") || (other values here...)) return false;
    return true;
  }
}