Xamarin Forms Bind Array 元素在 listView 内
Posted
技术标签:
【中文标题】Xamarin Forms Bind Array 元素在 listView 内【英文标题】:Xamarin Forms Bind Array element inside listView 【发布时间】:2019-03-30 23:58:00 【问题描述】:需要请你帮忙。 我目前正在使用 MVVM 开发 Xamarin Forms 解决方案,我现在处于一个新的境地。
我有一个列表视图,其中包含此类制作的项目
public class City
public int Key get; set;
public string Value get; set;
public List<string> Words get; = new List<string> "One", "Two", "Three" ;
我想要实现的是显示使用Key
指示的Words
列表元素创建的标签文本。像
Words[Key]
例子
<ListView
ItemsSource="Binding Cities">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout
HorizontalOptions="FillAndExpand"
VerticalOptions="StartAndExpand">
<Label Text="Binding Words[Key]"
FontSize="18"
TextColor="Black"
VerticalOptions="StartAndExpand" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
标签文本绑定不起作用,但技术上是我需要实现的。例如,如果我使用Words[0]
,它将起作用并返回“One”
我的 ViewModel 非常简单。
public class TestViewModel : INotifyPropertyChanged
public ObservableCollection<City> Cities get; set;
public TestViewModel()
Cities = GetCities();
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string name = null)
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
public ObservableCollection<City> GetCities()
return new ObservableCollection<City>
new City Key = 1, Value = "Mumbai",
new City Key = 2, Value = "New York",
new City Key = 3, Value = "Milan",
new City Key = 4, Value = "Rome"
;
我需要为索引创建一个属性吗?在我看来,问题在于我在一个列表中并且已经有一个索引可以使用。
感谢大家的帮助
【问题讨论】:
设置ItemsSource
将自动为您执行此操作。您不必专门将每个元素提供给 ViewCell。只需设置Text="Binding Value"
,它就会以与ObservableCollection
相同的顺序显示列表。还要在 ObservableCollection 的 set 方法上触发 OnPropertyChanged
可能使用支持字段
对不起,我犯了一个小错误。我想写 Values[Key] 因为我不想要 Value 属性,我想要的是显示一个 List 元素值。我更新了问题更改名称以便更好地理解
在这种情况下,您可以使用IValueConverter。看看,如果您仍有任何问题,请更新您的转换器实现
【参考方案1】:
你可以修改你的模型:
public class City
public int Key get; set;
public string Value get; set;
public List<string> Words get; = new List<string> "One", "Two", "Three" ;
public string myValue
get
return Words[Key];
set
在您的.xmal
中,只需设置Text="Binding myValue"
,它将显示单词的列表元素值。
【讨论】:
以上是关于Xamarin Forms Bind Array 元素在 listView 内的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms:Forms.Context 已过时
Xamarin.Forms 和 Xamarin Native 有啥区别? [关闭]
如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色
Xamarin Forms Prism:prism ResourceDictionary 中已存在具有键“Xamarin.Forms.NavigationPage”的资源
Xamarin.Forms.Forms.Init(e) Onlaunched 中的 FileNotFoundExeception