如何将db表中的属性绑定到combobox WPF?

时间:2014-05-06 19:31:37

标签: c# wpf combobox

这是我的组合框:

<ComboBox
                HorizontalAlignment="Left"
                Margin="125,110,0,0"
                VerticalAlignment="Top"
                Width="120"
                SelectedValue="{Binding LotNumber, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                ItemsSource="{Binding LotNumber}"
                RenderTransformOrigin="0.583,2" Height="18" />

这是我的LotNumber的财产:

private string lotNumber;
public string LotNumber
    {
        get
        {
            return lotNumber;
        }
        set
        {
            lotNumber = value;
            RaisePropertyChanged("LotNumber");
        }
    }

现在批号属性在我的lotInformation表下。

E.g。 (类的摘录,类有另一个属性)

public class LotInformation
{
    [XmlAttribute("lot_number")]
    public string lot_number { get; set; }

}

所以,我的dbset是:

public DbSet<LotInformation> LotInformation {get;set;}

组合框的绑定是空的。什么都没有结合......我不确定为什么。我应该使用ComboBox_Loaded吗?

基本上,我只想显示数据库中当前存在的所有批号。

2 个答案:

答案 0 :(得分:2)

您将ItemsSource绑定到LotNumber,这是一个字符串。 ItemsSource的预期值是要在下拉列表中显示的对象集合。

由于string不是“对象的集合”,因此绑定可能会失败。

您要做的是创建可用值的集合(如果您的集合是静态的,则使用List<string>;如果集合是动态的并且可以在运行时更改,则使用ObservableCollection<string>)并绑定你的ItemsSource财产

<ComboBox ItemsSource="{Binding AllAvailableLotNumbers}"
          SelectedItem="{Binding LotNumber}" />

答案 1 :(得分:1)

ItemsSource的类型为IEnumerable,因此您需要将lotInformation表(某种LotNumbers集合)传递给它。对于绑定,您需要设置如下所示的属性: -

<ComboBox             
DisplayMemberPath="LotNumber"
ItemsSource="{Binding lotInformation }"/>