private void Button_Clear_Clicked(object sender, RoutedEventArgs e)
 {
     FileList.Clear();
     FileListTemp.Clear();
     ID3v1_TagList.Clear();
     ID3v2_TagList.Clear();
     LastPath = "";
 }
        private void Preview(string path)
        {
            if (!File.Exists(path))
            {
                return;
            }
            try
            {
                var tfile           = TagLib.File.Create(path, TagLib.ReadStyle.None);
                TagLib.Id3v1.Tag t  = (TagLib.Id3v1.Tag)tfile.GetTag(TagLib.TagTypes.Id3v1);
                TagLib.Id3v2.Tag t2 = (TagLib.Id3v2.Tag)tfile.GetTag(TagLib.TagTypes.Id3v2);

                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();
                GetAllStringProperties(t).ForEach(x =>
                {
                    x.Value         = encoding[1].GetString(Encoding.GetEncoding("ISO-8859-1").GetBytes(x.Value));
                    x.Value_Preview = ConvertHelper.Convert(x.Value, encoding, ToChinese1);
                    ID3v1_TagList.Add(x);
                });

                GetAllStringProperties(t2).ForEach(x =>
                {
                    x.Value_Preview = ConvertHelper.Convert(x.Value, ToChinese2);
                    ID3v2_TagList.Add(x);
                });
            }
            catch (TagLib.UnsupportedFormatException)
            {
                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();
                ID3v1_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "非音訊檔"
                });
                ID3v2_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "非音訊檔"
                });
            }
            catch (System.Exception)
            {
                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();
                ID3v1_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "未知"
                });
                ID3v2_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "未知"
                });
            }
        }
        private void Preview(string path)
        {
            if (!File.Exists(path))
            {
                return;
            }
            try
            {
                var tfile           = TagLib.File.Create(path, TagLib.ReadStyle.None);
                TagLib.Id3v1.Tag t  = (TagLib.Id3v1.Tag)tfile.GetTag(TagLib.TagTypes.Id3v1);
                TagLib.Id3v2.Tag t2 = (TagLib.Id3v2.Tag)tfile.GetTag(TagLib.TagTypes.Id3v2);

                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();

                GetAllStringProperties(t).ForEach(x =>
                {
                    x.Value         = StringToUnicode.TryToConvertLatin1ToUnicode(x.Value, encoding[0]);
                    x.Value_Preview = ConvertEncoding ? ConvertHelper.Convert(x.Value, encoding, ToChinese1) : ConvertHelper.Convert(x.Value, ToChinese1);
                    ID3v1_TagList.Add(x);
                });

                GetAllStringProperties(t2).ForEach(x =>
                {
                    if (tfile.TagTypesOnDisk.HasFlag(TagLib.TagTypes.Id3v2))
                    {
                        x.Value = StringToUnicode.TryToConvertLatin1ToUnicode(x.Value, encoding2[0]);
                    }
                    else
                    {
                        var _   = ID3v1_TagList.Where(y => y.TagName == x.TagName).FirstOrDefault();
                        x.Value = _ != null ? _.Value_Preview : "";
                    }
                    x.Value_Preview = ConvertHelper.Convert(x.Value, ToChinese2);
                    ID3v2_TagList.Add(x);
                });
            }
            catch (TagLib.UnsupportedFormatException)
            {
                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();
                ID3v1_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "非音訊檔"
                });
                ID3v2_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "非音訊檔"
                });
            }
            catch (System.Exception)
            {
                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();
                ID3v1_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "未知"
                });
                ID3v2_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "未知"
                });
            }
        }
        private async void Preview(string path)
        {
            if (!File.Exists(path))
            {
                return;
            }
            try
            {
                var tfile           = TagLib.File.Create(path, TagLib.ReadStyle.None);
                TagLib.Id3v1.Tag t  = (TagLib.Id3v1.Tag)tfile.GetTag(TagLib.TagTypes.Id3v1);
                TagLib.Id3v2.Tag t2 = (TagLib.Id3v2.Tag)tfile.GetTag(TagLib.TagTypes.Id3v2);

                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();

                var TagList = GetAllStringProperties(t);
                TagList.ForEach(x => x.Value = StringToUnicode.TryToConvertLatin1ToUnicode(x.Value, encoding[0]));
                var Dic     = TagList.ToDictionary(x => x.TagName, x => x.Value);
                var resoult = ConvertEncoding ? await ConvertHelper.ConvertDictionary(Dic, encoding, ToChinese1) : await ConvertHelper.ConvertDictionary(Dic, ToChinese1);

                TagList.ForEach(x =>
                {
                    x.Value_Preview = resoult[x.TagName];
                    ID3v1_TagList.Add(x);
                });


                TagList = GetAllStringProperties(t2);
                Dic     = TagList.ToDictionary(x => x.TagName, x =>
                {
                    if (tfile.TagTypesOnDisk.HasFlag(TagLib.TagTypes.Id3v2))
                    {
                        return(StringToUnicode.TryToConvertLatin1ToUnicode(x.Value, encoding2[0]));
                    }
                    else
                    {
                        var _ = ID3v1_TagList.Where(y => y.TagName == x.TagName).FirstOrDefault();
                        return(_ != null ? _.Value_Preview : "");
                    }
                });
                resoult = await ConvertHelper.ConvertDictionary(Dic, ToChinese2);

                TagList.ForEach(x =>
                {
                    x.Value_Preview = resoult[x.TagName];
                    ID3v2_TagList.Add(x);
                });
            }
            catch (TagLib.UnsupportedFormatException)
            {
                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();
                ID3v1_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "非音訊檔"
                });
                ID3v2_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "非音訊檔"
                });
            }
            catch (FanhuajiException val)
            {
                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();
                ID3v1_TagList.Add(new TagList_Line
                {
                    TagName = "Error",
                    Value   = val.Message
                });
                ID3v2_TagList.Add(new TagList_Line
                {
                    TagName = "Error",
                    Value   = val.Message
                });
            }
            catch (System.Exception)
            {
                ID3v1_TagList.Clear();
                ID3v2_TagList.Clear();
                ID3v1_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "未知"
                });
                ID3v2_TagList.Add(new TagList_Line()
                {
                    TagName = "Error", Value = "未知"
                });
            }
        }