我已经构建了一个自定义用户控件,它具有IEnumerable作为输入,它还应该返回一个IEnumerable。这是一个灵活的控件,可以接收任何对象集合。以下是一些代码片段,可帮助您了解我的问题:
项目来源
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(MultiSelectionComboBox), new PropertyMetadata(
new PropertyChangedCallback(OnItemsSourcePropertyChanged)));
public IEnumerable ItemsSource
{
get { return (IEnumerable)GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
所选项目
public static readonly DependencyProperty SelectedItemsProperty =
DependencyProperty.Register("SelectedItems", typeof(IEnumerable), typeof(MultiSelectionComboBox), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(MultiSelectionComboBox.OnSelectedItemsChanged)));
public IEnumerable SelectedItems
{
get { return (IEnumerable)GetValue(SelectedItemsProperty); }
set
{
SetValue(SelectedItemsProperty, value);
}
}
除了构建SelectedItems属性
这一部分之外,我能够完成控制工作foreach(string s in appo)
{
IEnumerator en = ItemsSource.GetEnumerator();
while (en.MoveNext())
{
var val = en.Current;
Type type = val.GetType();
PropertyInfo property = type.GetProperty(DisplayMemberPath);
if (property != null)
{
string name = (string)property.GetValue(val, null);
if(name == s)
{
// need something here
}
}
}
}
基本上在if
内部我检查了IEnumerator
en的当前元素必须包含在SelectedItem中。问题是我不知道如何在输出中包含这个元素(即SelectedItems)。
如果你有更好的想法,我也会采取不同的方法
答案 0 :(得分:3)
问题是const Product = mongoose.model('Product', ProductSchema)
ScrapProducts()
.then(mapToModel)
.then(Product.create.bind(Product))
无法添加项目。因此,您需要将其更改为具有添加方法的内容,例如IEnumerable
或IList
。