小编jpg*_*ner的帖子

如何使用MVVM模式实现进度条

我有一个基于MVVM设计模式的WPF应用程序.

我希望在应用程序中实现一个遵循MVVM模式的进度条.

有没有人对如何实现这一点有任何建议?

提前致谢

c# wpf mvvm

35
推荐指数
3
解决办法
4万
查看次数

mvvm如何使列表视图自动滚动到列表视图中的新项目

我正在使用MVVM模式,我有一个创建新视图的视图ViewModel,在用户单击保存后,此视图关闭并打开一个单独的视图,其中显示了一组视图模型ListView.

ListView是按字母顺序排序的,因此新的ViewModel可能会出现在ListBox用户无法立即看到的底部.

我的问题是如何让视图自动滚动到新添加的项目?

我想它会使用附加的行为和ScrollIntoView事件ListView,但是我需要从GridView我不确定的事件中捕获哪个事件.

干杯

c# wpf listview scroll mvvm

17
推荐指数
1
解决办法
2万
查看次数

Update an ObservableCollection with a background worker in MVVM

Ok, I recently implemented a background worker to perform saving and loading of data.

However, getting this to work on a save command has proved difficult.

基本上,我的save命令生成一个事件,该事件通知集合视图模型,已添加Item,并且该项应添加到其自己的ObservableCollection中.

此时,我得到通常的异常,说我不能在不同的线程上更新ICollection.我已经尝试创建一个调用的新列表类型Dispatcher.Invoke,但是这仍然会生成相同的异常.

我想知道是否有其他人对如何最好地解决这个问题有任何建议?

所以目前我有一个继承自ObservableCollection的类:

public class ThreadSafeObservableCollection<T> : ObservableCollection<T>
{
    public ThreadSafeObservableCollection(List<T> collection)
        : base(collection)
    {
        dispatcher = Dispatcher.CurrentDispatcher;
        rwLock = new ReaderWriterLock();
    }

    protected override void InsertItem(int index, T item)
    {
        if (dispatcher.CheckAccess())
        {
            if (index > this.Count)
                return;
            LockCookie c = rwLock.UpgradeToWriterLock(-1);
            base.InsertItem(index, item);
            rwLock.DowngradeFromWriterLock(ref c);
        }
        else
        {
            object[] …
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading observablecollection

10
推荐指数
1
解决办法
8015
查看次数

标签 统计

c# ×3

wpf ×3

mvvm ×2

listview ×1

multithreading ×1

observablecollection ×1

scroll ×1