我在我的WPF应用程序中的某些列表中显示的食谱列表。 我有一些食谱
public Cookbook()
{
RecipeList=new ObservableCollection<Recipe>();
AddRecipe(new Recipe("Food1", 0, null));
}
每个食谱都有名为Name。public string Name { get; set; }
我现在正在做的是我用这个集合填充列表
<ListView x:Name="CategoriesListBox" Margin="10,0,10,0" ItemsSource="{Binding RecipeList}"
Loaded="CategoriesListBox_OnLoaded"
SelectionChanged="CategoriesListBox_SelectionChanged">
<ListBox.DataContext>
<Implementation:Cookbook/>
</ListBox.DataContext>
</ListView>
当然结果列在用对象名填充的列表中 - 我希望列表中的食谱名称。有没有办法在列表框中显示属性名称?
(我正在寻找XAML解决方案 - 后面没有代码)
//我已经尝试过ListView和嵌套的Gridview作为解决方案 - 这可以工作,但这也会在顶部创建不必要的网格和标题字段。
<ListView x:Name="CategoriesListBox" Margin="10,0,10,0" ItemsSource="{Binding RecipeList}"
Loaded="CategoriesListBox_OnLoaded"
SelectionChanged="CategoriesListBox_SelectionChanged">
<ListBox.DataContext>
<Implementation:Cookbook/>
</ListBox.DataContext>
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridView.Columns>
<GridViewColumn DisplayMemberBinding="{Binding Path=Name, Mode=OneWay}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
由于
答案 0 :(得分:2)
使用ListView的DisplayMemberPath
属性。
将其设置为Name
DisplayMemberPath="Name"
答案 1 :(得分:1)
使用ListBox而不是ListView,并设置其DisplayMemberPath
属性:
<ListBox ItemsSource="{Binding RecipeList}" DisplayMemberPath="Name" .../>
或设置其ItemTemplate
属性:
<ListBox ItemsSource="{Binding RecipeList}" ...>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>