我正在使用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需要传入项索引吗?
答案 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;
}
}