所以我有两个列表,一个是作者的名字,另一个是引用。 我需要两个进入相同的ListView控制器。名称和引用来自两个不同的列表,它必须是这样的。
<ListView x:Name ="CategoryListView" ItemsSource ="{Binding Authors, Binding Quotes}" HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate >
<ViewCell >
<ViewCell.View >
<StackLayout>
<StackLayout Orientation="Horizontal" Padding="10">
<Label Text ="{Binding AuthorName}" FontSize="10" TextColor="White"/>
<Label Text="{Binding QuoteContent}" FontSize="10" TextColor="White"/>
</StackLayout>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这就是我尝试过的方式,但它并没有起作用。 这是我的代码:
public QuotePageViewModel(string category, IEnumerable<Quote> qoutes, List<Author> matchingAuthors)
{
Category = category;
Quotes = new List<Quote>();
Quotes = qoutes.ToList();
Authors = new List<Author>();
Authors = matchingAuthors.ToList();
}
答案 0 :(得分:1)
这是我的建议: 将List绑定到Dictionary。 我们将你的标签绑定到字典的Key和Value,在你的Xaml中只需这样做:
<ListView x:Name ="CategoryListView" HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate >
<ViewCell >
<ViewCell.View >
<StackLayout>
<StackLayout Orientation="Horizontal" Padding="10">
<Label Text ="{Binding Key}" FontSize="10" TextColor="White"/>
<Label Text="{Binding Value}" FontSize="10" TextColor="White"/>
</StackLayout>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
现在填写一个带有作者和引号的字典(假设引号和教父的长度相同且索引匹配,因此引用[0]匹配作者[0])。并将其添加为列表的ItemsSource:
var dict = new Dictionary<string, string>();
for(int i = 0; i<quotes.Count; i++)
{
dict.Add(Authors[i], quotes.ElemetAt(i));
}
CategoryListView.ItemsSource = dict;
这应该对你有用,但请记住,Dictionary没有实现INotifyPropertyChanged,因此在运行期间内容的更改将不会显示