代码之家  ›  专栏  ›  技术社区  ›  the_tr00per

xamarin forms listvew binding-将viewcell标签绑定到方法

  •  0
  • the_tr00per  · 技术社区  · 6 年前

    我使用的是xamarin表单,使用的是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 回复  |  直到 6 年前
        1
  •  1
  •   EvZ    6 年前

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

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

    但是,我认为 List 应该只包含可见项,否则可能有多个空项 ListItems .

        2
  •  0
  •   Jason    6 年前
    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;
      }
    }