Tag: observablecollection

将可观察的集合转换回常规集合

一个函数有一个objecttypes的参数。 我debugging它看看程序的另一部分发给我什么types的数据types。 基地是一个ObservableCollection。 我如何将其转换为列表?

WPF多个CollectionView与同一个集合上的不同filter

我正在使用一个ObservableCollection与两个ICollectionView不同的filter。 一个是按某种types过滤邮件,一个是用于计算检查的邮件。 正如你所看到的消息filter和消息计数工作正常,但是当我不检查消息从列表中消失( 计数仍在工作 )。 顺便说一句,很抱歉,我想包括所有相关的东西。 XAML代码: <!– Messages List –> <DockPanel Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Height="500"> <ListBox Name="listBoxZone" ItemsSource="{Binding filteredMessageList}" Background="Transparent" BorderThickness="0"> <ListBox.ItemTemplate> <DataTemplate> <CheckBox Name="CheckBoxZone" Content="{Binding text}" Tag="{Binding id}" Unchecked="CheckBoxZone_Unchecked" Foreground="WhiteSmoke" Margin="0,5,0,0" IsChecked="{Binding isChecked}" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </DockPanel> <Button Content="Test Add New" Grid.Column="2" Height="25" HorizontalAlignment="Left" Margin="34,2,0,0" Click="button1_Click" /> <Label Content="{Binding checkedMessageList.Count}" Grid.Column="2" Height="25" […]

绑定到ObservableCollection <T>时如何删除DataGrid的空白行?

我在这里得到坚果: ObservableCollection<Employee> list = new ObservableCollection<Employee>(); dgEmployees.ItemsSource = list; 当你debugging列表variables,它是空的(list.Count = 0),但是然后我把它绑定到一个DataGrid(WPFToolkit),它显示我一个空行。 在即时窗口中,对于dgEmployees.Items,它显示: dgEmployees.Items[0] {NewItemPlaceholder} 和 dgEmployees.Items[0].GetType() {Name = "NamedObject" FullName = "MS.Internal.NamedObject"} [System.RuntimeType]: {Name = "NamedObject" FullName = "MS.Internal.NamedObject"} 这似乎发生在我把这个Datagrid放入一个TabControl后,但我不确定它有什么关系。 有谁知道如何删除这个空行?

ObservableCollection和Item PropertyChanged

我已经看到了很多关于这个问题的讨论,但也许我只是一个新手得到它。 如果我有一个可观察的集合,如msdn示例( http://msdn.microsoft.com/en-us/library/ms748365.aspx )中的“PersonNames”的集合,我得到更新我的视图,如果PersonName被添加或删除等等。当我更改PersonName的属性时,我想要更新我的视图。 就像我改变名字一样。 我可以为每个属性实现OnPropertyChanged ,并从INotifyPropertyChanged派生这个类似乎被调用的预期。 我的问题是,视图如何从ObservableCollection获取更新的数据,因为更改的属性不会导致ObservableCollection任何事件。 这可能很简单,但为什么我不能find一个令我惊喜的例子。 任何人都可以摆脱这个对我来说,或有任何指标,我将不胜感激它。 我们在当前的WPF应用程序的多个地方都有这种情况,并且正在努力解决这个问题。 “通常,负责显示数据的代码会向当前显示在屏幕上的每个对象添加一个PropertyChanged事件处理程序。” 有人可以给我一个这是什么意思的例子吗? 我的视图绑定到我有一个ObservableCollection ViewModel 。 此集合由具有支持PropertiesChanged事件的PropertiesChanged的RowViewModel组成。 但我不知道如何使集合更新自己,所以我的观点将被更新。

RemoveAll为ObservableCollections?

我正在寻找Linq的方式(像RemoveAll方法列表),可以从我的ObservableCollection中删除选定的项目。 我太新,无法为自己创build扩展方法。 有没有什么办法从ObservableCollection中移除传递Lambdaexpression式的项目?

清除ObservableCollection时,e.OldItems中没有项目

我在这里有一些东西让我非常吃惊。 我有一个充满了项目的T的ObservableCollection。 我也有一个事件处理程序附加到CollectionChanged事件。 清除集合时,会导致eChanged事件将e.Action设置为NotifyCollectionChangedAction.Reset。 好的,这很正常。 但是奇怪的是,e.OldItems和e.NewItems都没有任何东西。 我期望e.OldItems被填充从集合中删除的所有项目。 有没有人看过这个? 如果是这样,他们怎么绕过它? 一些背景:我正在使用CollectionChanged事件附加和从另一个事件分离,因此,如果我没有得到任何项目在e.OldItems …我将无法脱离该事件。 澄清:我知道文件没有直接说明它必须这样做。 但是对于其他的行动,它是通知我做了什么。 所以,我的假设是,它会告诉我…在清除/重置的情况下。 如果你想自己重现它,下面是示例代码。 首先closuresxaml: <Window x:Class="ObservableCollection.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300" > <StackPanel> <Button x:Name="addButton" Content="Add" Width="100" Height="25" Margin="10" Click="addButton_Click"/> <Button x:Name="moveButton" Content="Move" Width="100" Height="25" Margin="10" Click="moveButton_Click"/> <Button x:Name="removeButton" Content="Remove" Width="100" Height="25" Margin="10" Click="removeButton_Click"/> <Button x:Name="replaceButton" Content="Replace" Width="100" Height="25" Margin="10" Click="replaceButton_Click"/> <Button x:Name="resetButton" […]

如何避免在replace所有元素或添加元素集时多次触发ObservableCollection.CollectionChanged

我有ObservableCollection<T>集合,我想用新的元素集合来replace所有元素,我可以这样做: collection.Clear(); 要么: collection.ClearItems(); (顺便说一句,这两种方法有什么区别?) 我也可以使用foreach来collection.Add一个接一个地添加,但是会多次触发 添加元素集合时也是如此。 编辑: 我在这里find了一个好的库: 增强的ObservableCollection能够延迟或禁用通知,但它似乎不支持silverlight。

.NET ObservableDictionary

我已经写了下面的类来实现(或试图!)带有通知的字典: public partial class ObservableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, INotifyCollectionChanged { public ObservableDictionary() : base() { } public ObservableDictionary(int capacity) : base(capacity) { } public ObservableDictionary(IEqualityComparer<TKey> comparer) : base(comparer) { } public ObservableDictionary(IDictionary<TKey, TValue> dictionary) : base(dictionary) { } public ObservableDictionary(int capacity, IEqualityComparer<TKey> comparer) : base(capacity, comparer) { } public ObservableDictionary(IDictionary<TKey, TValue> dictionary, IEqualityComparer<TKey> comparer) […]

ObservableCollection和线程

我在课堂上有一个ObservableCollection 。 进一步进入我的课,我有一个线程。 从这个线程我想添加到我的ObservableCollection 。 但我不能这样做: 这种types的CollectionView不支持从与分派器线程不同的线程对其SourceCollection的更改。 请注意,这不是从UI线程发生的,所以我没有访问调度程序。

sortingObservableCollection <string> C#

我有下面的ObservableCollection<string> 。 我需要按字母顺序sorting。 private ObservableCollection<string> _animals = new ObservableCollection<string> { "Cat", "Dog", "Bear", "Lion", "Mouse", "Horse", "Rat", "Elephant", "Kangaroo", "Lizard", "Snake", "Frog", "Fish", "Butterfly", "Human", "Cow", "Bumble Bee" }; 我试过_animals.OrderByDescending 。 但我不知道如何正确使用它。 _animals.OrderByDescending(a => a.<what_is_here_?>); 我该怎么做?