private void SetChannel(Channel channel) { Channel = channel; Members = new UIThreadObservableList <ChannelMemberViewModel>(new MappingObservableList <Channel.Member, ChannelMemberViewModel>( new SortingObservableList <Channel.Member>(Channel.Members, Comparer <Channel.Member> .Create((x1, x2) => Comparer <string> .Default.Compare(x1.Character.Name, x2.Character.Name))), member => new ChannelMemberViewModel(characterManager, channelManager, Channel, member))); }
public CharacterConversationViewModel(Func <Command, bool> commandHandler, IMessageManager messageManager, ILogManager logManager, CharacterViewModel character) : base(commandHandler, messageManager) { MaxMessageBytes = messageManager.MaxPrivateBytes; Character = character; this.messageManager = messageManager; messages = new ObservableList <MessageViewModel>(logManager.LoadReverse(logManager.GetLogId(character.Character), false, 20).Select(x => new MessageViewModel(x, true))); Messages = new UIThreadObservableList <MessageViewModel>(messages); messageManager.CharacterMessageReceived += (c, message) => { if (c == character.Character) { AddToMessages(messages, new MessageViewModel(message)); } }; EnteredTextChanged += () => SetTyping(!string.IsNullOrEmpty(EnteredText)); IsPinned = CharacterSettings.Instance.PinnedCharacters.Contains(Name); TypingCommand = new MvxCommand <bool>(SetTyping); }