【问题标题】:Binding ListView inside combobox item not binding(showing)在组合框项目内绑定 ListView 未绑定(显示)
【发布时间】: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


【解决方案1】:

你应该尝试调用该方法

FillRecipesList()

在 ViewModel 的构造函数中

【讨论】:

  • 被调用并填充列表
猜你喜欢
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多