我已经花了大约3个小时来解决这个问题,但是我遇到了一个死路。
目前我正在尝试将列表绑定到ComboBox。
我已经尝试了几种方法来绑定列表:
后台代码:
public partial class MainWindow : Window
{
public coImportReader ir { get; set; }
public MainWindow()
{
ir = new coImportReader();
InitializeComponent();
}
private void PremadeSearchPoints(coSearchPoint sp)
{
//SearchRefPoint.DataContext = ir.SearchPointCollection;
SearchRefPoint.ItemsSource = ir.SearchPointCollection;
SearchRefPoint.DisplayMemberPath = Name;
数据绑定正确,但是由于某种原因,DisplayMemberPath 返回的是类名而不是它的成员名。
XAML 方法返回了一个空字符串...
<ComboBox x:Name="SearchRefPoint" Height="30" Width="324" Margin="0,10,0,0"
VerticalAlignment="Top" ItemsSource="{Binding ir.SearchPointCollection}"
DisplayMemberPath="Name">
我还尝试过用在MainWindow中创建的新列表填充它。结果两种情况都相同。
我也尝试创建ListCollectionView,成功了,但问题是我无法获取ComboBox项目的索引。我更喜欢按ID工作。因此,我正在寻找一种新的解决方案,在这里我找到了一个:http://zamjad.wordpress.com/2012/08/15/multi-columns-combo-box/ 这个例子的问题在于不清楚itemsource是如何绑定的。
编辑:
总之,我目前正在尝试绑定一个类(coImportReader)中定义的对象(coSearchPoints)的列表(SearchPointsCollection)。
namespace Import_Rates_Manager
{
public partial class MainWindow : Window
{
public coImportReader ir;
public coViewerControles vc;
public coSearchPoint sp;
public MainWindow()
{
InitializeComponent();
ir = new coImportReader();
vc = new coViewerControles();
sp = new coSearchPoint();
SearchRefPoint.DataContext = ir;
}
}
}
//in function....
SearchRefPoint.ItemsSource = ir.SearchPointCollection;
SearchRefPoint.DisplayMemberPath = "Name";
namespace Import_Rates_Manager
{
public class coImportReader
{
public List<coSearchPoint> SearchPointCollection = new List<coSearchPoint>();
}
}
namespace Import_Rates_Manager
{
public class coSearchPoint
{
public coSearchPoint()
{
string Name = "";
Guid Id = Guid.NewGuid();
IRange FoundCell = null;
}
}
}
这将导致一个填充的组合框,没有文本。