gpt4 book ai didi

Xamarin Forms Bind Array 元素在 listView 内

转载 作者:行者123 更新时间:2023-12-03 10:32:22 26 4
gpt4 key购买 nike

需要请你帮忙。
我目前正在使用 MVVM 开发 Xamarin Forms 解决方案,我现在处于一个新的境地。

我有一个 ListView ,其中包含此类制作的项目

 public class City
{
public int Key { get; set; }
public string Value { get; set; }
public List<string> Words{ get; } = new List<string> { "One", "Two", "Three" };
}

我想要实现的是显示使用 Words 创建的标签文本列出由 Key 指示的元素.就像是
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>

标签文本绑定(bind)不起作用,但技术上是我需要实现的。例如,如果我使用 Words[0]它会工作并返回“一”

我的 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"}
};
}
}

我需要为索引创建一个属性吗?在我看来,问题在于我在一个列表中并且已经有一个索引可以使用。

谢谢大家的帮助

最佳答案

您可以修改模型:

 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 内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53005073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com