XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using Microsoft.UI.Xaml.Media;
namespace XFEEDToolBox.Controls;

public sealed class BilingualText : UserControl
{
    public static readonly DependencyProperty TextProperty=DependencyProperty.Register(nameof(Text),typeof(string),typeof(BilingualText),new PropertyMetadata("",Changed));
    public static readonly DependencyProperty OriginalProperty=DependencyProperty.Register(nameof(Original),typeof(string),typeof(BilingualText),new PropertyMetadata("",Changed));
    public string Text{get=>(string)GetValue(TextProperty);set=>SetValue(TextProperty,value);}
    public string Original{get=>(string)GetValue(OriginalProperty);set=>SetValue(OriginalProperty,value);}
    private readonly TextBlock primary=new(){TextWrapping=TextWrapping.Wrap,FontWeight=Microsoft.UI.Text.FontWeights.SemiBold};
    private readonly TextBlock original=new(){TextWrapping=TextWrapping.Wrap,FontSize=11,Foreground=new SolidColorBrush(Windows.UI.Color.FromArgb(255,145,163,185))};
    public BilingualText(){var panel=new StackPanel{Spacing=3};panel.Children.Add(primary);panel.Children.Add(original);Content=panel;}
    private static void Changed(DependencyObject sender,DependencyPropertyChangedEventArgs args)=>((BilingualText)sender).Update();
    private void Update(){primary.Text=Text??"";original.Text=Original??"";original.Visibility=string.IsNullOrWhiteSpace(Original)||Original==Text?Visibility.Collapsed:Visibility.Visible;}
}