我正在尝试创建一个小型聊天应用,该应用在主窗体上显示一个标签控件,并会在收到来自不同用户的消息时显示新标签。
所有的事件连接都已完成且运行良好,但是在视觉上,在TabItems内部,有一个需要绑定到数据的列表框,我没有得到运行时错误,但是当事件完成时,列表框保持为空
如果我在窗口的已加载事件中添加消息,我会在屏幕上看到该消息,但是当我收到消息时,相同的代码似乎不起作用。 代码中的断点使我确信它正在执行,并且没有抛出任何异常。
以下是一些代码:
//Executes when there's an incoming message
[...]
public ObservableCollection<Discussion> UserDiscussionList { get; set; }
public string NewMessage { get; set; }
public Discussion CurrentDiscussion { get; set; }
public async void MessageReceived(string userName, string message)
{
await _dispatcher.InvokeAsync(() =>
{
CurrentDiscussion = UserDiscussionList[0];
CurrentDiscussion.MessageList.Add(new MessageDetail
{
Message = message,
UserName = userName
});
NewMessage = string.Empty; //resets the typed message property
});
}
[...]
这是我的xaml:
<TabControl Grid.Row="0" ItemsSource="{Binding Path=UserDiscussionList}" SelectedItem="{Binding CurrentDiscussion, Mode=TwoWay}">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Header"
Value="{Binding Path=Title}" />
</Style>
</TabControl.ItemContainerStyle>
<TabControl.Resources>
<DataTemplate DataType="{x:Type hub:Discussion}">
<views:DiscussionControl/>
</DataTemplate>
</TabControl.Resources>
</TabControl>
谢谢!
答案 0 :(得分:0)
我忘了将我的MessageList声明为ObservableCollection&lt;&gt; ...这样做可以使一切运行完美。