using System; using System.Windows; using HandyControl.Data; namespace HandyControl.Controls { public class ChatBubble : SelectableItem { public static readonly DependencyProperty RoleProperty = DependencyProperty.Register( "Role", typeof(ChatRoleType), typeof(ChatBubble), new PropertyMetadata(default(ChatRoleType))); public ChatRoleType Role { get => (ChatRoleType)GetValue(RoleProperty); set => SetValue(RoleProperty, value); } public static readonly DependencyProperty TypeProperty = DependencyProperty.Register( "Type", typeof(ChatMessageType), typeof(ChatBubble), new PropertyMetadata(default(ChatMessageType))); public ChatMessageType Type { get => (ChatMessageType)GetValue(TypeProperty); set => SetValue(TypeProperty, value); } public static readonly DependencyProperty IsReadProperty = DependencyProperty.Register( "IsRead", typeof(bool), typeof(ChatBubble), new PropertyMetadata(ValueBoxes.FalseBox)); public bool IsRead { get => (bool)GetValue(IsReadProperty); set => SetValue(IsReadProperty, value); } public static void SetMaxWidth(DependencyObject element, double value) => element.SetValue(MaxWidthProperty, value); public static double GetMaxWidth(DependencyObject element) => (double)element.GetValue(MaxWidthProperty); public Action ReadAction { get; set; } protected override void OnSelected(RoutedEventArgs e) { base.OnSelected(e); IsRead = true; ReadAction?.Invoke(Content); } } }