Tag: observablecollection

ObservableCollection CollectionChanged对WPF MVVM没有帮助

我正在使用DataGrid并使用ViewModel中的ObservableCollection进行绑定 private ObservableCollection _stockList; public ObservableCollection StockList { get { return _stockList; } set { _stockList = value; OnPropertyChanged(“StockList”); } } StockItem类包含其属性,它是DataGrid中的列。 DataGrid中有一个名为Amount的列,其值已更改为同一数据网格的Quantity * Price Column。 我在ViewModel中有一个名为TotalAmount的属性,它在ObservableCollection CollectionChanged事件中计算得像 void OnStockListChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { this.TotalAmount = this.StockList.Sum(t => t.Amount); } 当使用某些数据将新行添加到DataGrid时,此值仅在TextBox绑定到TotalAmount时更新。 我希望在数据网格中的数量列更改后立即更新TotalAmount的TextBox。 我怎样才能做到这一点。 StockItem Class public class StockItem : ObservableObject, ISequencedObject { JIMSEntities dbContext = […]

将WCF RIA服务查询结果加载到ObservableCollection

在我的Silverlight应用程序中,在创建ADO.NET实体数据模型和WCF RIA服务域服务类之后,在相应的ProductService类中,我有一个查询操作,它将一组Product实体返回给客户端,如下所示: public IQueryable GetProducts() { return this.ObjectContext.Products; } 现在我试图在客户端Silverlight应用程序中读取它并将结果加载到ObservableCollection: ProductContext pcontext = new ProductContext(); ObservableCollection prAvs = pcontext.GetProductsQuery(); 但是得到一个错误: 无法将System.ServiceModel.DomainServices.Client.EntityQuery类型隐式转换为System.Collections.ObjectModel.ObservableCollection 我该如何解决这个问题?

将ObservableCollection绑定到MVVM中的DataGrid

我有一个DataGrid,我绑定到我的视图模型中的ObservableCollection,我需要能够在DataGrid排序时对集合进行排序,以便我可以在其他地方使用此排序顺序。 我目前正在使用ObvservableCollection上的包装器来支持排序。 对DataGrid进行排序时,它只对显示的数据进行排序,而不对集合中的基础数据进行排序。 数据由一个整数列和一个字符串列组成,需要在两者上支持升序和降序排序。 我还希望保持与标准DataGrid排序相同的用法,您可以在其中单击列标题并在升序和降序排序之间切换。 我对WPF比较陌生,所以我不知道数据和命令绑定的所有细节,但我认为有一种方法可以实现我想做的事情。 这是一个示例xaml来说明我的视图设置。 源数据的类型如下: public class myType { public int firstValue { get; set; } public string secondValue { get; set; } // some functions and variables… } 现在,就像我上面所说的,我需要按照排序顺序访问集合中的项目,但它不需要特别是ObservableCollection。 只要我可以在我访问它们时按当前顺序迭代集合中的项目,一切都很好。 我想的可能是ListCollectionView或其他东西。 当新项目添加到集合中时,我也不希望集合重新排序。 任何新项目都应该像通常会发生的那样添加到集合的末尾。 有任何想法吗?

WPF和ObservableCollection

我有一个我要显示的ObservableCollection – IRuleCondition接口由我想要显示的2个不同的类使用, RuleCondition只显示一个规则条件(诸如优先级,要检查的属性等信息),以及一个RuleConditionGroup ,可以包含2个或更多RuleConditions ,以任何条件可以匹配的方式分组,或者全部等。 在XAML中,我想知道是否有一种方法可以显示不同的ListView.ItemTemplate具体取决于它在ObservableCollection遇到的类型? 或者我需要实现两个不同的ObservableCollection ?

获取WPF Listview以使用数据绑定显示ObservableCollection

我有一个类型为Project的可观察集合,我希望在ListView中显示但是没有添加到我的ListView中,我真的不明白 我的MainWindow.xaml 我的MainWindow.cs public partial class MainWindow : Window { ObservableCollection Projects = new ObservableCollection(); ObservableCollection Employees = new ObservableCollection(); public MainWindow() { InitializeComponent(); DataContext = Projects; Project pro1 = new Project(1, “Swordfish”); Projects.Add(pro1); Employee empMads = new Employee(“Mads”, 1); Employee empBrian = new Employee(“Brian”, 2); Employees.Add(empMads); Employees.Add(empBrian); } private void ListViewProjectsSelectionChanged(object sender, SelectionChangedEventArgs e) […]

如何将ObservableCollection OrderBy()传递给DataSet

我有一个ObservableCollection类,如下所示: public ObservableCollection GetModules() { DataSet ds = StoreDbDataSet.ReadDataSet(); ObservableCollection modules = new ObservableCollection(); foreach (DataRow moduleRow in ds.Tables[“Modules”].Rows) { modules.Add(new Module(moduleRow[“ModelNumber”].ToString(), moduleRow[“ParamName”].ToString(), (UInt16)moduleRow[“ParamValue”], (UInt16)moduleRow[“DefaultValue”], (UInt16)moduleRow[“MaxValue”], (UInt16)moduleRow[“MinValue”], (uint)moduleRow[“Address”])); } return modules; } 所以在我的用法中,我这样做了: private ObservableCollection myModulesList; private void RefreshModulesByOrder() { myModulesList = new ObservableCollection(sdb.GetModules().OrderBy(mod => mod.Address)); ModulesView = CollectionViewSource.GetDefaultView(myModulesList); ModulesView.Filter = obj => { var […]

在ObservableCollection上触发InotifyPropertyChanged / CollectionChanged

我已经尝试过关于此的其他主题,但我还没有找到一个有效的实现问题。 基本上,我有一个名为“FruitBasket”的ObservableCollection,它包含不同种类的水果。 FruitBasket本身包含ObservableCollections,用于通过的每个相应类型的水果,以便它们可以用作ListViews的 ItemSources (由它们的名称“AppleContainer”和“OrangeContainer”表示),每个都显示一种水果。 因为水果类本身实现了INotifyPropertyChanged,修改它们的值会触发对ListView控件的更新,但是,FruitBasket具有从集合中所有其他水果的权重派生的“TotalWeight”属性。 我希望“TotalWeight”更新UI中的Label控件,而无需刷新UI。 触发关于实际ObservableCollection本身的属性更改的通知,而不仅仅是其组成成员更加困难,而且我还没有找到任何可行的解决方案(或者我已经正确实现)。 public class FruitBasket : ObservableCollection { private decimal _totalWeight; public FruitBasket() { this.Add(new OrangeContainer(this)); this.Add(new AppleContainer(this)); } public OrangeContainer Oranges { get { return (OrangeContainer)this.Items[0]; } } public AppleContainer Apples { get { return (AppleContainer)this.Items[1]; } } public decimal TotalWeight { get { return _totalWeight; } set […]

使用System.Reactive观察ObservableCollection中的项目的PropertyChanged

我有: public class Vm { private ObservableCollection _things; public ObservableCollection Things { get { return _things ?? (_things = new ObservableCollection()); } } } 和 public class Thing :INotifyPropertyChanged { private string _value; public string Value { get { return _value; } set { if (value == _value) return; _value = value; OnPropertyChanged(); } } […]

C#ObservableCollection OnCollectionChanged在项目更改时不触发

在MSDN上关于OnCollectionChanged:“在添加,删除,更改,移动项目或刷新整个列表时发生。” 我正在更改附加到我的集合中的obj的属性,但不会触发OnCollectionChanged。 我正在obj类上实现iNotifyPropertyChanged。 public class ObservableBatchCollection : ObservableCollection { protected override void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if(e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) { foreach (BatchData item in e.NewItems) { } } base.OnCollectionChanged(e); } public ObservableBatchCollection(IEnumerable items) : base(items) { } } 对我来说,这意味着当集合中的某个项目发生更改时(例如对象的属性),该事件应该触发。 然而,事实并非如此。 我希望能够知道我的自定义集合中的项目何时发生更改,以便我可以根据需要对其进行计算。 有什么想法吗?

在WPF树视图中分组数据

我想用两个分组选项(单选按钮)创建一个WPF TreeView 。 因此,数据将在两级层次结构中以两种不同的方式进行分组,最低级别是实际数据项,而这些组只是表示数据的一种方式,以便于理解。 他们也可以按组选择项目(复选框),但我已经弄清楚了这一部分,例如,如果我想表示数据库对象,并希望按模式或对象类型(表,视图,函数,等等。)。 我只是不知道如何开始这两种分组模式。 每当分组模式改变或是否有更简单的方法时,我是否应该完全重构我的ObservableCollection ? 另外,如果我的第二级DataTemplate会根据分组模式略有不同,例如按对象类型分组时需要在第2级显示架构,该怎么办? 谁能给我一些关于如何开始和使用哪些技巧的提示?