【发布时间】:2019-12-27 15:19:40
【问题描述】:
我正在尝试创建一个包含多个项目和标题的组合框,我正在接近的方法是在组合框内创建一个 listView(或 DataGrid)
但由于某种原因,项目不会绑定
XAML(当 ComboBox.ItemTemplate 使用项目时,项目正确显示,当然没有标题)
<ComboBox
materialDesign:HintAssist.Hint="בחר מתכון מהרשימה">
<!--ItemsSource = "{Binding Path=Recipes}" >-->
<!--DisplayMemberPath = "Description">-->
<ListView ItemsSource="{Binding Recipes}"
SelectedItem="{Binding Path=SelectedRecipe}"
Height="200" ScrollViewer.VerticalScrollBarVisibility="Visible" IsEnabled="False" Focusable="False">
<ListView.View>
<GridView>
<GridViewColumn Width="130" Header="Description" DisplayMemberBinding="{Binding Description}" />
</GridView>
</ListView.View>
</ListView>
</ComboBox>
ViewModel(我使用 Prism 作为我的 MVVM 库)
public ObservableCollection<Recipes> Recipes
{
get { return _recipes; }
set { SetProperty(ref _recipes, value); }
}
private ObservableCollection<Recipes> _recipes = new ObservableCollection<Recipes>();
private async void FillRecipesList() //this is call on program startup
{
if (Recipes != null && Recipes.Count > 0)
{
Recipes.Clear();
}
var result = await _mSql.GetRecipes();
if (result.Count() > 0)
Recipes.AddRange(result);
}
型号
public class Recipes
{
public long AutoNum { get; set; }
public int? RecipeCode { get; set; }
public int? RecipeVersion { get; set; }
public string Description { get; set; }
}
【问题讨论】:
-
@dymanoid 编辑了我的问题并添加了一张图片以便更好地理解
-
将
ListView移出ComboBox是否有效?你为什么首先使用ComboBox? -
请提供一个完整的例子。 ComboBox 位于某种 XAML 文件中:UserControl、Window、Page 等。
Recipes是您称为视图模型的某个类的成员。该视图模型的实例应该是包含组合框的视图的 DataContext。如果是这种情况,并且Recipes集合中有任何项目,ListView 将正确填充(我测试过)。因此,其中至少有一件是不正确的。但这是一个简短的清单。祝你好运。
标签: c# wpf mvvm combobox prism