Skip to content
This repository has been archived by the owner on Dec 20, 2023. It is now read-only.

修复评论详情显示为其它内容的问题 #798

Merged
merged 1 commit into from
Mar 6, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 22 additions & 12 deletions src/App/Controls/Common/EmotiTextBlock/EmotiTextBlock.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public sealed class EmotiTextBlock : Control
private RichTextBlock _richBlock;
private RichTextBlock _flyoutRichBlock;
private Button _overflowButton;
private bool _isOverflowInitialized;

/// <summary>
/// Initializes a new instance of the <see cref="EmotiTextBlock"/> class.
Expand Down Expand Up @@ -63,6 +64,7 @@ protected override void OnApplyTemplate()
_overflowButton = GetTemplateChild("OverflowButton") as Button;

_richBlock.IsTextTrimmedChanged += OnIsTextTrimmedChanged;
_overflowButton.Click += OnOverflowButtonClick;

InitializeReplyContent();
base.OnApplyTemplate();
Expand All @@ -71,24 +73,18 @@ protected override void OnApplyTemplate()
private static void OnReplyInfoChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var instance = d as EmotiTextBlock;
instance._isOverflowInitialized = false;
instance.InitializeReplyContent();
}

private void OnIsTextTrimmedChanged(RichTextBlock sender, IsTextTrimmedChangedEventArgs args)
{
_overflowButton.Visibility = sender.IsTextTrimmed ? Visibility.Visible : Visibility.Collapsed;
if (sender.IsTextTrimmed)
if (instance._overflowButton != null && instance._richBlock != null)
{
_flyoutRichBlock.Blocks.Clear();

if (ReplyInfo != null)
{
var para = ParseReplyInfo();
_flyoutRichBlock.Blocks.Add(para);
}
instance._overflowButton.Visibility = instance._richBlock.IsTextTrimmed ? Visibility.Visible : Visibility.Collapsed;
}
}

private void OnIsTextTrimmedChanged(RichTextBlock sender, IsTextTrimmedChangedEventArgs args)
=> _overflowButton.Visibility = sender.IsTextTrimmed ? Visibility.Visible : Visibility.Collapsed;

private void InitializeReplyContent()
{
if (_richBlock != null && ReplyInfo != null)
Expand All @@ -99,6 +95,20 @@ private void InitializeReplyContent()
}
}

private void OnOverflowButtonClick(object sender, RoutedEventArgs e)
{
if (!_isOverflowInitialized)
{
_flyoutRichBlock.Blocks.Clear();

if (ReplyInfo != null)
{
var para = ParseReplyInfo();
_flyoutRichBlock.Blocks.Add(para);
}
}
}

private Paragraph ParseReplyInfo()
{
var message = ReplyInfo.Content.Message;
Expand Down