C# 第一次在XAML中开发,无法使我的聊天正常工作

C# 第一次在XAML中开发,无法使我的聊天正常工作,c#,wpf,xaml,chat,C#,Wpf,Xaml,Chat,第一次用XAML编写应用程序时,我从不同的来源学习,我正在尝试制作一个应用程序。现在我正在努力做一个好看的聊天,但是遇到了一个我根本无法解决的错误 Bug从主窗口开始的部分: <chat:ChatViewModel/> 以下是C#代码: 公共部分类ChatViewModel:UserControl { 公共聊天室视图模型() { 初始化组件(); } } 这是我的消息列表的外观: class消息列表:ViewModelBase { 公共消息列表() { 消息=新的Observab

第一次用XAML编写应用程序时,我从不同的来源学习,我正在尝试制作一个应用程序。现在我正在努力做一个好看的聊天,但是遇到了一个我根本无法解决的错误

Bug从主窗口开始的部分:

<chat:ChatViewModel/>
以下是C#代码:

公共部分类ChatViewModel:UserControl
{
公共聊天室视图模型()
{
初始化组件();
}
}
这是我的消息列表的外观:

class消息列表:ViewModelBase
{
公共消息列表()
{
消息=新的ObservableCollection();
}
公共ObservableCollection消息{get;set;}
}
最后,这是MainWindow.cs中的代码,用于从文本文件创建消息列表。每条信息的文本文件格式为“David/Hi你好吗?”:

var ListMessage=new MessageList();
使用(StreamReader文件=新的StreamReader(“../usilisateur/Chat.txt”))
{
字符串文本;
而((text=file.ReadLine())!=null)
{
string[]list=text.Split('/');
如果(列表[0]=“David”)
{
添加(newoutgoingmessage{MessageContent=list[1]});
}
其他的
{
添加(newincomingmessage{MessageContent=list[1]});
}
}
}
消息类如下所示:

公共类消息:ViewModelBase
{
///发件人名称
公共字符串SenderName{get;set;}
///电文
私有字符串_messageContent;
公共字符串消息内容
{
得到
{
返回消息内容;
}
设置
{
_messageContent=值;
OnPropertyChanged(“MessageContent”);
}
}
///如果消息已被读取,则为True
公共图书馆信息阅读;
///消息发送的时间
public DateTimeOffset MessageSentTime{get;set;}
}
还有我从互联网上复制的ViewModelBase,因为我不完全理解它是如何工作的

公共类ViewModelBase:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
受保护的void OnPropertyChanged([CallerMemberName]string propName=null)
{
var handler=PropertyChanged;
if(处理程序!=null)
{
处理程序(此,新PropertyChangedEventArgs(propName));
}
}
}
这里我有一个文本文件,每行代表一条消息,格式为“NameOftender/message”

然后,我想将消息显示为小气泡,橙色,如果我收到消息,则显示在窗口的左侧,如果我发送消息,则显示为灰色,并显示在窗口的右侧。目前窗户上什么也看不见。
在用户控件的DataContext中,以及窗口的代码隐藏中创建两个不同的MessageList实例。向其中一个添加项目对另一个没有影响

用户控件不应设置自己的DataContext。从UserControl的XAML中删除此DataContent分配:

<UserControl.DataContext>
    <local:MessageList/>
</UserControl.DataContext>

DataContext属性的值现在将由UserControl继承。

在UserControl的DataContext中,并在窗口的代码隐藏中创建两个不同的MessageList实例。向其中一个添加项目对另一个没有影响。用户控件不应设置自己的DataContext。它应该从主窗口继承DataContext值。我如何更改代码以执行您所说的操作?因为我觉得这就是问题所在。谢谢你的建议,我将改变我未来观点的名称!!只是照你说的做了,现在我的泡泡工作了,非常感谢,但是左边的联系人列表(见图)没有显示任何内容,不管怎样,设置不同的datacontext?不知道“左边的联系人列表”应该是什么。你的问题中没有这方面的内容。可能会问一个新问题并显示相关细节。我指的是我在初始消息末尾链接的图像,我使用datacontext作为联系人,但现在我更改了它,它不再工作了。我会尝试自己解决它,如果我不能,我会提出一个新问题。谢谢大家
var ListMessage = new MessageList();
DataContext = ListMessages;