我在 Xamarin Forms 中遇到绑定(bind)问题。我想根据 Listview
的计数项将 Label
的 IsVisible
属性设置为 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/