protected override void PrepareContainerForItemOverride(DependencyObject element, object item) { var bubble = element as BubbleListViewItem; var messageCommon = item as TLMessageCommonBase; if (bubble != null && messageCommon != null) { if (item is TLMessageService) { bubble.Padding = new Thickness(12, 0, 12, 0); } else { var message = item as TLMessage; if (message != null && message.ToId is TLPeerChat || message.ToId is TLPeerChannel && !message.IsPost) { //// WARNING: this is an hack. //// We should verify that this still works every Windows release! //// ItemsStackPanel has a bug and it disregards //// about headers width when measuring the items, //// causing them to take all the ItemsStackPanel width //// and getting truncated out of it at the right side. //// The code below prevents this behavior adding //// the exact padding/margin to compehensate the headers width //if (message.IsOut) //{ // bubble.Padding = new Thickness(44, 0, 12, 0); // bubble.Margin = new Thickness(12, 0, 0, 0); // bubble.HorizontalAlignment = HorizontalAlignment.Right; //} //else //{ // bubble.Padding = new Thickness(12, 0, 56, 0); // bubble.Margin = new Thickness(0, 0, 44, 0); // bubble.HorizontalAlignment = HorizontalAlignment.Left; //} if (message.IsOut) { if (message.IsSticker()) { bubble.Padding = new Thickness(12, 0, 12, 0); } else { bubble.Padding = new Thickness(52, 0, 12, 0); } } else { if (message.IsSticker()) { bubble.Padding = new Thickness(52, 0, 12, 0); } else { bubble.Padding = new Thickness(52, 0, MessageToShareConverter.Convert(message) ? 4 : 52, 0); } } } else { if (message.IsSticker()) { bubble.Padding = new Thickness(12, 0, 12, 0); } else { if (message.IsOut && !message.IsPost) { bubble.Padding = new Thickness(52, 0, 12, 0); } else { bubble.Padding = new Thickness(12, 0, MessageToShareConverter.Convert(message) ? 4 : 52, 0); } } } } } base.PrepareContainerForItemOverride(element, item); }
protected override void PrepareContainerForItemOverride(DependencyObject element, object item) { var bubble = element as ListViewItem; var messageCommon = item as TLMessageCommonBase; if (bubble != null && messageCommon != null) { if (messageCommon.IsService()) { bubble.Padding = new Thickness(12, 0, 12, 0); } else { var message = item as TLMessage; if (message != null && message.ToId is TLPeerChat || message.ToId is TLPeerChannel && !message.IsPost) { if (message.IsOut) { if (message.IsSticker()) { bubble.Padding = new Thickness(12, 0, 12, 0); } else { bubble.Padding = new Thickness(52, 0, 12, 0); } } else { if (message.IsSticker()) { bubble.Padding = new Thickness(52, 0, 12, 0); } else { bubble.Padding = new Thickness(52, 0, MessageToShareConverter.Convert(message) ? 12 : 52, 0); } } } else { if (message.IsSticker()) { bubble.Padding = new Thickness(12, 0, 12, 0); } else { if (message.IsOut && !message.IsPost) { bubble.Padding = new Thickness(52, 0, 12, 0); } else { bubble.Padding = new Thickness(12, 0, MessageToShareConverter.Convert(message) ? 12 : 52, 0); } } } } } base.PrepareContainerForItemOverride(element, item); }
protected override void PrepareContainerForItemOverride(DependencyObject element, object item) { var container = element as ListViewItem; var messageCommon = item as TLMessageCommonBase; if (container != null && messageCommon != null) { if (messageCommon.IsService()) { container.Padding = new Thickness(12, 0, 12, 0); container.HorizontalAlignment = HorizontalAlignment.Stretch; container.Width = double.NaN; container.Height = double.NaN; container.Margin = new Thickness(); } else if (messageCommon is TLMessage message) { if (message.IsSaved() || message.ToId is TLPeerChat || message.ToId is TLPeerChannel && !message.IsPost) { if (message.IsOut && !message.IsSaved()) { if (message.IsSticker()) { container.Padding = new Thickness(12, 0, 12, 0); } else { container.Padding = new Thickness(52, 0, 12, 0); } } else { if (message.IsSticker()) { container.Padding = new Thickness(52, 0, 12, 0); } else { container.Padding = new Thickness(52, 0, MessageToShareConverter.Convert(message) ? 12 : 52, 0); } } } else { if (message.IsSticker()) { container.Padding = new Thickness(12, 0, 12, 0); } else { if (message.IsOut && !message.IsPost) { container.Padding = new Thickness(52, 0, 12, 0); } else { container.Padding = new Thickness(12, 0, MessageToShareConverter.Convert(message) ? 12 : 52, 0); } } } } } base.PrepareContainerForItemOverride(element, item); }