【问题标题】:sync object list in wpf chat list if changed如果更改,则在 wpf 聊天列表中同步对象列表
【发布时间】:2017-11-19 09:05:38
【问题描述】:

我使用聊天应用程序的 WPF UI(MVVM 模型),我可以在代码中显示聊天列表静态和聊天消息,但是当从数据库获取新数据时我无法同步它,应用程序与 Singleton 一起使用

#region Singleton
/// <summary>
/// A single instance of the design model
/// </summary>
/// 
public static ChatListDesignModel Instance => new ChatListDesignModel();

    public ChatListDesignModel()
    {
            Items = new List<ChatListItemViewModel>
            {
                new ChatListItemViewModel
                {
                    Name = "Luke1111111",
                    Initials = "LM",
                    Message = "This chat app is awesome! I bet it will be fast too",
                    ProfilePictureRGB = "3099c5", //fe4503 00d405 3099c5
                    NewContentAvailable = true,
                     IsSelected = true
                },
            };
    }

此项目已显示,但是当我将新项目添加到项目时,它不会插入 UI 中

 <Grid DataContext="{x:Static core:ChatListDesignModel.Instance}" Background="{StaticResource ForegroundLightBrush}">
    <ScrollViewer VerticalScrollBarVisibility="Auto">
        <ItemsControl   ItemsSource="{Binding Items }">

定义为 ObservableCollection 的聊天消息,它也不会重新刷新或从实时数据库中获取新值

【问题讨论】:

  • Items 似乎是 List,而不是 ObservableCollection。对吗?

标签: c# .net wpf chat


【解决方案1】:

视图未获知List 内的更改。相反,您应该使用ObservableCollectionObservableCollection

表示一个动态数据集合,它在添加、删除项目或刷新整个列表时提供通知。

这意味着您的视图可以识别更改并根据需要更新 GUI。

只需将您的项目更改为ObservableCollection&lt;ChatListItemViewModel&gt;。你也可以像这样初始化它

Items = new ObservableCollection<ChatListItemViewModel>
{
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多