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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }