0
mainform에 탭 컨트롤을 표시하고 다른 사용자로부터받은 메시지에 따라 새 탭을 표시하는 작은 대화 앱을 만들려고합니다.tabcontrol 내의 WPF MVVM 바인딩 목록 상자
모든 이벤트 배선이 완료되고 잘 작동하지만 시각적으로는 TabItem 내부에 데이터에 바인딩해야하는 목록 상자가 있으며 런타임 오류는 발생하지 않지만 이벤트가 완료되면 목록 상자가 비어있게됩니다. 맡은 일.
로드 된 이벤트에 메시지를 추가하면 화면에 해당 메시지가 표시되지만 여전히 메시지를 받으면 동일한 코드가 작동하지 않는 것 같습니다. 코드에서 중단 점이 발생하여 예외가 발생하지 않습니다.
여기에 코드의 비트는 다음과 같습니다
<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>
감사합니다 :
//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입니다!
예, 아무 것도 나타나지 않습니다 ... –
INotifyPropertyChanged를 구현합니까? –
'CurrentDiscussion.MessageList'는 ObservableCollection입니까? – sthotakura