所以我有一个带有ItemTemplate的ListView,我希望用ObservableCollection的内容填充这些内容,并且我没有成功。
ItemTemplate:
<Page.Resources>
<DataTemplate x:Key="templateIngredient">
<TextBlock Text="{Binding GetIngredient}"></TextBlock>
</DataTemplate>
</Page.Resources>
ListView:
<ListView x:Name="listViewIngredienten" ItemTemplate="{StaticResource templateIngredient}" SelectionMode="None">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Margin" Value="0,-5,0,-5"></Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
数据源:
public class RecipeDataItem
{
public String UniqueId { get; set; }
public String Title { get; set; }
public String ShortTitle { get; set; }
public String Country { get; set; }
public String Directions { get; set; }
public int Preptime { get; set; }
public int Rating { get; set; }
public int ImageId { get; set; }
public ObservableCollection<String> Ingredients { get; set; }
public String GetIngredient
{
get
{
foreach (var ingredient in Ingredients)
{
return ingredient;
}
return null;
}
}
我必须写&#34;返回null;&#34;因为我得到的错误是并非所有代码路径都返回一个值。
任何人都可以帮我解决这个问题吗?如果需要,我可以提供更多代码,但我认为问题在于GetIngredient代码。当我简单地返回ObservableCollection的第一个值并使用TextBlock而不是ListView来获取它时,它可以工作。
有什么想法吗?
提前致谢!
答案 0 :(得分:0)
对于那些关心的人,我的错误是数据模板中的绑定。我将它绑定到我的类中的函数(getIngredient),而它应该只是{Binding}。
<Page.Resources>
<DataTemplate x:Key="templateIngredient">
<TextBlock Text="{Binding}"></TextBlock>
</DataTemplate>
之后我在listview中给了listview一个项目源:
private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e) { var item = RecipeDataSource.getItem((String)e.NavigationParameter); this.DefaultViewModel["Item"] = item; listViewIngredienten.ItemsSource = item.Ingredients;
解决!