Binding to Queuelt;stringgt;. UI never updates(绑定到队列lt;字符串gt;.UI 从不更新)
问题描述
我将 ListBox 绑定到 Queue.当我将项目入队/出队时,ListBox 不会更新.
I bound a ListBox to a Queue<string>. When I enqueue/dequeue items, the ListBox does not update.
我有帮助入队/出队来提高属性更改
I have helpers for enqueue/dequeue to raise property change
protected void EnqueueWork(string param)
{
Queue.Enqueue(param);
RaisePropertyChanged("Queue");
}
protected string DequeueWork()
{
string tmp = Queue.Dequeue();
RaisePropertyChanged("Queue");
return tmp;
}
推荐答案
你实现了 INotifyCollectionChanged 了吗?您需要它来通知诸如从集合中添加或删除项目之类的操作.
Have you implemented INotifyCollectionChanged ? you need this for notifications of actions like adding or removing items from a collection.
这是队列的简单实现:
public class ObservableQueue<T> : INotifyCollectionChanged, IEnumerable<T>
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
private readonly Queue<T> queue = new Queue<T>();
public void Enqueue(T item)
{
queue.Enqueue(item);
if (CollectionChanged != null)
CollectionChanged(this,
new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Add, item));
}
public T Dequeue()
{
var item = queue.Dequeue();
if (CollectionChanged != null)
CollectionChanged(this,
new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Remove, item));
return item;
}
public IEnumerator<T> GetEnumerator()
{
return queue.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
这篇关于绑定到队列<字符串>.UI 从不更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:绑定到队列<字符串>.UI 从不更新
基础教程推荐
- WPF 模态进度窗口 2022-01-01
- 如何使用 .Net 检查 Active Directory 服务器是否已启动并正在运行? 2022-01-01
- 禁止输入少量字符,例如'<'、'&a 2022-01-01
- 如果有人提交恶意软件Nuget包怎么办? 2022-01-01
- Azure Functions:CosmosDBTrigger 未在 Visual Studio 中触发 2022-01-01
- Moq It.Is<>不匹配 2022-01-01
- C# 从 List<List<int>> 中删除重 2022-01-01
- 当值可以是对象或空数组时反序列化 JSON 2022-01-01
- .NET SerialPort DataReceived 事件未触发 2022-01-01
- 我应该在后面的代码中直接使用 Linq To SQL 还是使 2022-01-01
