Xamarin Forms的ListView在ItemTemplate中绑定ViewModel变量非集合中的字段
首先定义一个ViewModel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
public class Item { public string Name; public string Des; } public class DemoViewModel:ObservableObject { string _displayText; public string DisplayText { get { return _displayText; } set { _displayText = value; OnPropertyChanged("DisplayText"); } } List<Item> _item; public List<Item> Items { get { return _item; } set { _item = value; OnPropertyChanged("Items"); } } public DemoViewModel() { DisplayText = "绑定内容在这里"; Items = new List<Item>(); Items.Add(new Item { Name = "小明", Des = "班长" }); Items.Add(new Item { Name = "小红", Des = "组长" }); Items.Add(new Item { Name = "小亮", Des = "学生" }); } |
接着在Page的cs文件中设置绑定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using MyTheme.ViewModels; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; using Xamarin.Forms.Xaml; namespace MyTheme.Views { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class DemoPage : ContentPage { DemoViewModel demoViewModel; public DemoPage () { InitializeComponent (); demoViewModel = new DemoViewModel(); BindingContext = demoViewModel; } } } |
在xaml中给Page添加x:Name以及绑定字段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?xml version="1.0" encoding="utf-8" ?> <ContentPage x:Name="DemoPage" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MyTheme.Views.DemoPage" > <ContentPage.Content> <StackLayout> <ListView ItemsSource="{Binding Items}"> <ListView.ItemTemplate> <DataTemplate> <Label Text="{Binding Name}"/> <Label Text="{Binding Path=BindingContext.DisplayText, Source={x:Reference Name=DemoPage}}"/> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackLayout> </ContentPage.Content> </ContentPage> |
如果您对C#游戏开发感兴趣,可以扫下面二维码加入我们的QQ群来一起学习交流
原创文章,转载请注明本文链接地址(违者必究):Xamarin Forms的ListView在ItemTemplate中绑定ViewModel变量非集合中的字段