(问题1 :)我正在尝试从我的本地数据库连接一个带有2列的组合框。问题是我想用ObservableCollection做这个,因为我想把每一行作为一个对象&我使用WPF与MVVM模式ofc。所以我有3个包含3个类的文件夹,但我只使用ViewModel和View(直到现在不是我的Model类)。
在我的ViewModel中我有这个:
ObservableCollection<PropertyFields> combo = new ObservableCollection<PropertyFields>();
public ViewModelEmp()
{
this.combo = new ObservableCollection<PropertyFields>();
comboconnect();
}
public void comboconnect()
{
... @ Connection columns & rows @ This is working i haved checked that out.
{
for (int i = 0; i < row.ItemArray.Count(); i++)
{
combo.Add(new PropertyFields { EMPLOYEE_ID = row.ItemArray[0].ToString(), LAST_NAME = row.ItemArray[1].ToString()});
}
}
}
}
我的PropertyField Class上有我的绑定所有属性,我不得不说我在ViewModel文件夹上也有一个Helper类,ViewModelBase有我的PropertyChangedEventHandler。
class PropertyFields : ViewModelBase
{
private object _EMPLOYEE_ID;
private object _LAST_NAME;
public object EMPLOYEE_ID
{
get { return _EMPLOYEE_ID; }
set { EMPLOYEE_ID = value; OnPropertyChanged("EMPLOYEE_ID"); }
}
public object LAST_NAME
{
get { return _LAST_NAME; }
set { _LAST_NAME = value; OnPropertyChanged("LAST_NAME"); }
}
public PropertyFields(object employee_id, object last_name)
{
this.EMPLOYEE_ID = employee_id;
this.LAST_NAME = last_name;
}
public PropertyFields()
{
}
}
&安培;这是我的用户界面的ComboBox绑定(一个用户控件..)
<ComboBox VerticalAlignment="Center" Grid.Column="1" Grid.Row="0" IsEditable="True" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Path=combo}" ItemTemplate="{StaticResource res}"/>
这是我的组合框的绑定:
<DataTemplate x:Key="res">
<StackPanel>
<TextBlock Text="{Binding EMPLOYEE_ID}" />
<TextBlock Text="{Binding LAST_NAME}" />
</StackPanel>
</DataTemplate>
我在这里遇到未处理的异常是我的错误图片:
http://s15.postimg.org/72wzzo9or/reallysucks.jpg
现在,每当我试图找到解决方案或者我遇到错误或者它无法正常工作时。
(问题2:)另外我还有一个问题,我希望在与其他文本框或我的GUI列表连接之后,我想我可以使用来自我的组合框的绑定来使用SelectedItems但我和# 39;我不太确定如何。先谢谢你们。
修改
我已经从我的PropertyFields编辑了我的属性:
public object LAST_NAME { get; set; }
public object EMPLOYEE_ID { get; set; }
public PropertyFields(object employee_id, object last_name)
{
this.EMPLOYEE_ID = employee_id;
this.LAST_NAME = last_name;
}
现在我的程序正在运行,但我的组合框中没有任何东西是空的:S
EDIT2:
我已经在我的数据库中添加了我的数据库中的数据,现在我如何更改项目中其他字段上的数据,如文本框?所以当我在组合框上选择第一行时,我需要将数据更新到其他文本框吗?