我现在已经解决了这个问题大约3个小时了,我走到了尽头 . 目前我正在尝试将列表绑定到ComboBox .
我使用了几种方法来绑定List:
代码背后:
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;
数据已正确绑定,但DisplayMemeberPath由于某种原因返回了类的名称而不是其成员的名称 .
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是如何绑定的 .
Edit:
总结一下:我目前正在尝试绑定一个类(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;
}
}
}
这导致填充的组合框没有文本
3 回答
DisplayMemberPath
应包含集合中元素的属性名称 . 假设SearchPointCollection
中的元素属于SearchPoint
类型,并且此类具有属性SearchPointName
,则应设置DisplayMemberPath
,如下所示:Edit:
在您的代码中,类
coSearchPoint
具有在构造函数中定义的FieldName
.Name
必须是类的属性,否则Binding无法工作 .这是一个使用MVVM模式的简单示例
XAML
代码
这是3个类:
MainWindow
将VM设置为其DatacontextcoImportReader
提供绑定属性的类coSearchPoint
这只是一个容器,供您参考IRange
这只是一个界面你绑定的集合需要是一个属性而不是一个字段 .
也试试这个:
绑定到irCollection并查看您获得的错误(如果有) .