这是我的组合框:
<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吗?
基本上,我只想显示数据库中当前存在的所有批号。
答案 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 }"/>