【问题标题】:Load table elements into the Combobox将表格元素加载到组合框中
【发布时间】:2020-01-05 21:40:04
【问题描述】:

我想将表格元素(从数据库)加载到组合框。不幸的是,下面的代码没有加载项目

<ComboBox   Margin="209,283,51,160" Name="Nazwa_menagera" ItemsSource="{Binding GetMenagerzyComboboxItems}"
                      SelectedValuePath="Key"
                      SelectedValue="{Binding Path=IdMenagera, Mode=TwoWay}"
                      DisplayMemberPath="Value"/>

private ATMAEntities atmaEntites;

  public IQueryable<ComboboxKeyAndValue> GetMenagerzyComboboxItems()
            {
                return
                    (
                        from menagerzy in atmaEntites.Menagerzy
                        select new ComboboxKeyAndValue
                        {
                            Key = menagerzy.idMenagera,
                            Value = menagerzy.nazwa + " " + menagerzy.imie + " " + menagerzy.nazwisko,
                        }
                    ).ToList().AsQueryable();
            }
public class ComboboxKeyAndValue
    {
        public int Key { get; set; }
        public string Value { get; set; }
    }

【问题讨论】:

  • 您可能需要包含更多的 XAML 代码。你在任何地方设置了DataContext 吗?
  • 我不能。我在其他程序中有相同的代码,并且可以正常工作:) 我只有 public int IdMenagera { get { return _IdMenagera; } 设置 { if (_IdMenagera != value) { _IdMenagera = value; OnPropertyChanged(() => IdMenagera); } } }

标签: c# wpf entity-framework


【解决方案1】:

你不能绑定到方法,它必须是一个属性。而且你也不能绑定到 IQueryable(至少据我所知)。

一些小改动可能会让它为您工作(假设您正确设置了 DataContext):

public IEnumerable<ComboboxKeyAndValue> MenagerzyComboboxItems
{
    get
    {
        return
        (
            from menagerzy in atmaEntites.Menagerzy
            select new ComboboxKeyAndValue
            {
                Key = menagerzy.idMenagera,
                Value = menagerzy.nazwa + " " + menagerzy.imie + " " + menagerzy.nazwisko,
            }
        ).ToList();
    }
}

并将您的 ItemsSource 绑定更改为

ItemsSource="{Binding MenagerzyComboboxItems, Mode=OneWay}"

为了获得更好的用户体验,您可能应该考虑改为异步检索数据并使用INotifyPropertyChanged 和/或通过ObservableCollection 将它们发布到视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-05
    • 2013-12-27
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多