我在WPF应用程序中有一个ComboBox,它绑定到C#ViewModel类中的Department对象的ObservableCollection。我想使用组合框按部门过滤另一个集合(现在它确实适用于此)问题是我想在列表顶部添加一个额外的选项“全部”。有没有正确的方法来做到这一点。制作一个假部门在很多方面都是错误的。
ComboBox
<ComboBox ItemsSource="{Binding Path=Departments}"
SelectedValue="{Binding Path=DepartmentToShow , Mode=TwoWay}" />
答案 0 :(得分:23)
您可以使用CompositeCollection作为ComboBox的ItemsSource以包含“全部”选项。您需要将CollectionContainer的Collection属性设置为“Department对象的ObservableCollection”。
<ComboBox >
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem>All</ComboBoxItem>
<CollectionContainer x:Name="departmentCollection"/>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
不确定这是否适合您的过滤情况......
答案 1 :(得分:0)
假设您有一个名为MyCombo
的ComboBox,一个名为MyEntity
的实体与名为MyDomainService
的DomaineService关联。
别忘了
using System.ServiceModel.DomainServices.Client;
当然可以很好地使用您的实体和DomainService的网站
你打电话给名为:
的Procvoid LoadEntities()
{
MyDomainService_Context = new MyDomainService();
EntityQuery<MyEntity > mQuery = null;
mQuery = from q in _Context.GetMyDomainServiceQuery()
select q;
LoadOperation<MyEntity > loadOpLoadEntities = _Context.Load(mQuery, LoadOpLoadEntitiesCallBack, null);
}
然后在CallBack
函数中:
void LoadOpLoadEntitiesCallBack(LoadOperation<MyEntity> loadOperation)
{
if (loadOperation.Entities.Count() > 0)
{
List<MyEntity> mList = new List<MyEntity>();
MyEntity mE = new MyEntity();
mE.Column1 = -1;
mE.Column2 = "Default value";
mList.Add(mE);
for (int i = 0; i < loadOperation.Entities.Count(); i++)
{
mList.Add(loadOperation.Entities.ToList()[i]);
}
this.MyCombo.ItemsSource = mList.ToList();
}
}