c# - 将 Listview 项目计数绑定(bind)到 Xamarin Forms 中的标签可见性

标签 c# xamarin xamarin.forms

我在 Xamarin Forms 中遇到绑定(bind)问题。我想根据 Listview 的计数项将 LabelIsVisible 属性设置为 true/false。如果 Listview 有任何项目,Label IsVisible 将为 false,否则将为 true。是否可以通过绑定(bind)在 Xamarin Forms 中制作?我尝试这样做,但我不知道如何在 XAML 中将数字 0 转换为 boolean false

最佳答案

您可以使用 DataTrigger 完全在 XAML 中完成此操作:

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 x:Class="ListViewTriggerToHideLabel.MainPage">
    <StackLayout>
        <Label Text="Welcome to Xamarin Forms!" IsVisible="False">
            <Label.Triggers>
                <DataTrigger TargetType="Label"
                             Binding="{Binding Source={x:Reference TheListView}, Path=ItemsSource.Count}" 
                             Value="0">
                    <Setter Property="IsVisible" Value="True" />
                </DataTrigger>
            </Label.Triggers>
        </Label>
        <ListView x:Name="TheListView" />
        <Button Text="Add an item" Clicked="Button_OnClicked" />
    </StackLayout>
</ContentPage>

处理按钮点击和初始化列表内容的代码隐藏(我通常使用 data binding ,但在示例中为了简单起见我使用代码隐藏):

using System;
using System.Collections.ObjectModel;
using Xamarin.Forms;

namespace ListViewTriggerToHideLabel {
  public partial class MainPage : ContentPage {
    private readonly ObservableCollection<string> _items = new ObservableCollection<string>();

    public MainPage() {
      InitializeComponent();
      TheListView.ItemsSource = _items;
    }

    private void Button_OnClicked(object sender, EventArgs e) {
      _items.Add("Ouch");
    }
  }
}

绑定(bind)到 Count属性有效,因为 ItemsSource是一个 ObservableCollection .

关于c# - 将 Listview 项目计数绑定(bind)到 Xamarin Forms 中的标签可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46042348/

相关文章:

c# - 根据谓词拆分字符串

java - Java 中的匿名类型类似于 C#

c# - 找不到类型或命名空间 'Assembly'(是否缺少 using 指令或程序集引用?)

android - 我如何在 xamarin.forms 上设置下一个版本

c# - 如何在 asp.net mvc 中重定向到正确的 Controller 操作

c# - 验证不同于页面 ViewModel 的 ViewModel

c# - 在 Android Xamarin mono 3.2.6 中递归解压文件夹

sqlite - 使用 SQLite.Net.Async 扩展 PCL 1.3.0 在同一对象上使用多个 @OneToOne?

xamarin - 如何使用 Realm Xamarin 获取独立/非托管 RealmObject

xaml - 用于自定义按钮的 ImageButton GestureRecognizers