当然是可以的。我假设您已经有一种方法来获取ListView中项目的数量,以下是如何将该数字转换为XAML中的布尔值。
您需要的是
IValueConverter接口的自定义实现。它可以接受绑定提供的值并将其转换为其他内容(如果需要,则可进行返回)。
在您的情况下,您想要取一个整数并返回一个布尔值。如果该值为零,则返回true,否则返回false。
public class CountToBoolenConverter : IValueConverter
{
public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (int)value != 0;
}
public object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException ();
}
}
接下来,您需要在XAML中定义命名空间。在文件顶部,您应该添加类似于以下内容的东西:
xmlns:local="clr-namespace:YourNameSpace;assembly=YourAssembly"
将转换器添加到页面资源中,在开头的
<ContentPage>
标签(或您拥有的任何类型的页面)之后:
<ContentPage>
<ContentPage.Resources>
<ResourceDictionary>
<CountToBoolenConverter x:Key="countToBoolean" />
</ResourceDictionary>
</ContentPage.Resources>
最后,使用转换器将IsVisible属性设置为您的标签:
<Label IsVisible="{Binding ItemCount, Converter={StaticResource countToBoolean}}">
ItemCount是您的视图模型中的整数属性,应包含ListView项目的计数。您可能已经有一种加载ListView项目集合的方法,因此应该很容易确定应如何完成此属性。