From 7ffc9fcd7d5b8f7a4b6c966fdefb09ac3e859ff5 Mon Sep 17 00:00:00 2001 From: Hakoyu Date: Mon, 13 Nov 2023 00:33:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VPet.ModMaker/Models/Expansions.cs | 35 ++ .../SimpleObservable/ObservableValue.cs | 1 + .../SimpleObservable/ObservableValueGroup.cs | 2 +- .../ModEdit/AnimeEdit/AnimePageVM.cs | 21 +- .../ModEdit/ClickTextEdit/ClickTextPageVM.cs | 10 +- .../ViewModels/ModEdit/FoodEdit/FoodPageVM.cs | 10 +- .../ModEdit/LowTextEdit/LowTextPageVM.cs | 10 +- .../ViewModels/ModEdit/MoveEdit/MovePageVM.cs | 10 +- .../ViewModels/ModEdit/PetEdit/PetPageVM.cs | 10 +- .../SelectTextEdit/SelectTextPageVM.cs | 10 +- .../ViewModels/ModEdit/WorkEdit/WorkPageVM.cs | 10 +- VPet.ModMaker/ViewModels/ModMakerWindowVM.cs | 15 +- .../ModEdit/I18nEdit/I18nEditWindow.xaml | 1 + .../ModEdit/I18nEdit/I18nEditWindow.xaml.cs | 362 +++++++----------- 14 files changed, 195 insertions(+), 312 deletions(-) diff --git a/VPet.ModMaker/Models/Expansions.cs b/VPet.ModMaker/Models/Expansions.cs index 63ba6e9..8e30427 100644 --- a/VPet.ModMaker/Models/Expansions.cs +++ b/VPet.ModMaker/Models/Expansions.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; @@ -204,6 +205,40 @@ public static class Extensions return $"{cultureInfo.DisplayName} [{cultureInfo.Name}]"; } + /// + /// 尝试使用索引获取值 + /// + /// 值类型 + /// 列表 + /// 索引 + /// 值 + /// 成功为 失败为 + public static bool TryGetValue(this IList list, int index, out T value) + { + value = default; + if (index < 0 || index >= list.Count) + return false; + value = list[index]; + return true; + } + + /// + /// 尝试使用索引获取值 + /// + /// 值类型 + /// 列表 + /// 索引 + /// 值 + /// 成功为 失败为 + public static bool TryGetValue(this IList list, int index, out object value) + { + value = default; + if (index < 0 || index >= list.Count) + return false; + value = list[index]; + return true; + } + /// /// 获取目标 /// diff --git a/VPet.ModMaker/SimpleObservable/ObservableValue.cs b/VPet.ModMaker/SimpleObservable/ObservableValue.cs index 0e2e68e..8ba5ca5 100644 --- a/VPet.ModMaker/SimpleObservable/ObservableValue.cs +++ b/VPet.ModMaker/SimpleObservable/ObservableValue.cs @@ -62,6 +62,7 @@ public class ObservableValue /// /// 初始值 public ObservableValue(T value) + : this() { _value = value; } diff --git a/VPet.ModMaker/SimpleObservable/ObservableValueGroup.cs b/VPet.ModMaker/SimpleObservable/ObservableValueGroup.cs index a12e104..5a16101 100644 --- a/VPet.ModMaker/SimpleObservable/ObservableValueGroup.cs +++ b/VPet.ModMaker/SimpleObservable/ObservableValueGroup.cs @@ -34,7 +34,7 @@ public class ObservableValueGroup : IEnumerable?> /// 在添加的时候改变值 (如果分组中存在值) /// [DefaultValue(false)] - public bool ChangeOnAdd { get; set; } = false; + public bool ChangeOnAdd { get; set; } = true; [DebuggerBrowsable(DebuggerBrowsableState.Never)] private readonly Dictionary>> _bindingValues = new(); diff --git a/VPet.ModMaker/ViewModels/ModEdit/AnimeEdit/AnimePageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/AnimeEdit/AnimePageVM.cs index 1029c48..7d13ca5 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/AnimeEdit/AnimePageVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/AnimeEdit/AnimePageVM.cs @@ -193,15 +193,10 @@ public class AnimePageVM window.ShowDialog(); if (window.IsCancel) return; - if (ShowAnimes.Value.Count == Animes.Count) - { - Animes[Animes.IndexOf(animeTypeModel)] = newAnime; - } - else - { - Animes[Animes.IndexOf(animeTypeModel)] = newAnime; + Animes[Animes.IndexOf(animeTypeModel)] = newAnime; + Animes[Animes.IndexOf(animeTypeModel)] = newAnime; + if (ShowAnimes.Value.Count != Animes.Count) ShowAnimes.Value[ShowAnimes.Value.IndexOf(animeTypeModel)] = newAnime; - } } else if (model is FoodAnimeTypeModel foodAnimeTypeModel) { @@ -214,15 +209,9 @@ public class AnimePageVM window.ShowDialog(); if (window.IsCancel) return; - if (ShowAnimes.Value.Count == FoodAnimes.Count) - { - FoodAnimes[FoodAnimes.IndexOf(foodAnimeTypeModel)] = newAnime; - } - else - { - FoodAnimes[FoodAnimes.IndexOf(foodAnimeTypeModel)] = newAnime; + FoodAnimes[FoodAnimes.IndexOf(foodAnimeTypeModel)] = newAnime; + if (ShowAnimes.Value.Count != FoodAnimes.Count) ShowAnimes.Value[ShowAnimes.Value.IndexOf(foodAnimeTypeModel)] = newAnime; - } } } diff --git a/VPet.ModMaker/ViewModels/ModEdit/ClickTextEdit/ClickTextPageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/ClickTextEdit/ClickTextPageVM.cs index 3703bd5..a482533 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/ClickTextEdit/ClickTextPageVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/ClickTextEdit/ClickTextPageVM.cs @@ -98,15 +98,9 @@ public class ClickTextPageVM window.ShowDialog(); if (window.IsCancel) return; - if (ShowClickTexts.Value.Count == ClickTexts.Count) - { - ClickTexts[ClickTexts.IndexOf(model)] = newLowTest; - } - else - { - ClickTexts[ClickTexts.IndexOf(model)] = newLowTest; + ClickTexts[ClickTexts.IndexOf(model)] = newLowTest; + if (ShowClickTexts.Value.Count != ClickTexts.Count) ShowClickTexts.Value[ShowClickTexts.Value.IndexOf(model)] = newLowTest; - } } /// diff --git a/VPet.ModMaker/ViewModels/ModEdit/FoodEdit/FoodPageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/FoodEdit/FoodPageVM.cs index 863ce30..66bb8b8 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/FoodEdit/FoodPageVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/FoodEdit/FoodPageVM.cs @@ -71,15 +71,9 @@ public class FoodPageVM window.ShowDialog(); if (window.IsCancel) return; - if (ShowFoods.Value.Count == Foods.Count) - { - Foods[Foods.IndexOf(food)] = newFood; - } - else - { - Foods[Foods.IndexOf(food)] = newFood; + Foods[Foods.IndexOf(food)] = newFood; + if (ShowFoods.Value.Count != Foods.Count) ShowFoods.Value[ShowFoods.Value.IndexOf(food)] = newFood; - } food.Close(); } diff --git a/VPet.ModMaker/ViewModels/ModEdit/LowTextEdit/LowTextPageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/LowTextEdit/LowTextPageVM.cs index 91784f2..280a7d0 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/LowTextEdit/LowTextPageVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/LowTextEdit/LowTextPageVM.cs @@ -72,15 +72,9 @@ public class LowTextPageVM window.ShowDialog(); if (window.IsCancel) return; - if (ShowLowTexts.Value.Count == LowTexts.Count) - { - LowTexts[LowTexts.IndexOf(model)] = newLowTest; - } - else - { - LowTexts[LowTexts.IndexOf(model)] = newLowTest; + LowTexts[LowTexts.IndexOf(model)] = newLowTest; + if (ShowLowTexts.Value.Count != LowTexts.Count) ShowLowTexts.Value[ShowLowTexts.Value.IndexOf(model)] = newLowTest; - } } private void Remove(LowTextModel model) diff --git a/VPet.ModMaker/ViewModels/ModEdit/MoveEdit/MovePageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/MoveEdit/MovePageVM.cs index 2ca2e16..36b422c 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/MoveEdit/MovePageVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/MoveEdit/MovePageVM.cs @@ -82,15 +82,9 @@ public class MovePageVM window.ShowDialog(); if (window.IsCancel) return; - if (ShowMoves.Value.Count == Moves.Count) - { - Moves[Moves.IndexOf(model)] = newMove; - } - else - { - Moves[Moves.IndexOf(model)] = newMove; + Moves[Moves.IndexOf(model)] = newMove; + if (ShowMoves.Value.Count != Moves.Count) ShowMoves.Value[ShowMoves.Value.IndexOf(model)] = newMove; - } } private void Remove(MoveModel model) diff --git a/VPet.ModMaker/ViewModels/ModEdit/PetEdit/PetPageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/PetEdit/PetPageVM.cs index 21fc73d..7b6a306 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/PetEdit/PetPageVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/PetEdit/PetPageVM.cs @@ -74,15 +74,9 @@ public class PetPageVM window.ShowDialog(); if (window.IsCancel) return; - if (ShowPets.Value.Count == Pets.Count) - { - Pets[Pets.IndexOf(model)] = newPet; - } - else - { - Pets[Pets.IndexOf(model)] = newPet; + Pets[Pets.IndexOf(model)] = newPet; + if (ShowPets.Value.Count != Pets.Count) ShowPets.Value[ShowPets.Value.IndexOf(model)] = newPet; - } model.Close(); } diff --git a/VPet.ModMaker/ViewModels/ModEdit/SelectTextEdit/SelectTextPageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/SelectTextEdit/SelectTextPageVM.cs index 354f739..742a8da 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/SelectTextEdit/SelectTextPageVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/SelectTextEdit/SelectTextPageVM.cs @@ -69,15 +69,9 @@ public class SelectTextPageVM window.ShowDialog(); if (window.IsCancel) return; - if (ShowSelectTexts.Value.Count == SelectTexts.Count) - { - SelectTexts[SelectTexts.IndexOf(model)] = newLowTest; - } - else - { - SelectTexts[SelectTexts.IndexOf(model)] = newLowTest; + SelectTexts[SelectTexts.IndexOf(model)] = newLowTest; + if (ShowSelectTexts.Value.Count != SelectTexts.Count) ShowSelectTexts.Value[ShowSelectTexts.Value.IndexOf(model)] = newLowTest; - } } private void Remove(SelectTextModel model) diff --git a/VPet.ModMaker/ViewModels/ModEdit/WorkEdit/WorkPageVM.cs b/VPet.ModMaker/ViewModels/ModEdit/WorkEdit/WorkPageVM.cs index 8ed96e3..f8ac91c 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/WorkEdit/WorkPageVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/WorkEdit/WorkPageVM.cs @@ -80,15 +80,9 @@ public class WorkPageVM window.ShowDialog(); if (window.IsCancel) return; - if (ShowWorks.Value.Count == Works.Count) - { - Works[Works.IndexOf(model)] = newWork; - } - else - { - Works[Works.IndexOf(model)] = newWork; + Works[Works.IndexOf(model)] = newWork; + if (ShowWorks.Value.Count != Works.Count) ShowWorks.Value[ShowWorks.Value.IndexOf(model)] = newWork; - } } private void Remove(WorkModel model) diff --git a/VPet.ModMaker/ViewModels/ModMakerWindowVM.cs b/VPet.ModMaker/ViewModels/ModMakerWindowVM.cs index fca714e..cd07ad9 100644 --- a/VPet.ModMaker/ViewModels/ModMakerWindowVM.cs +++ b/VPet.ModMaker/ViewModels/ModMakerWindowVM.cs @@ -113,21 +113,10 @@ public class ModMakerWindowVM Directory.CreateDirectory(nameof(ModMaker)); if (File.Exists(ModMakerInfo.HistoryFile) is false) File.Create(ModMakerInfo.HistoryFile).Close(); + var lps = new LPS(); foreach (var history in Histories) - { - lps.Add( - new Line(nameof(history)) - { - new Sub(nameof(ModMakeHistory.Id), history.Id), - new Sub(nameof(ModMakeHistory.SourcePath), history.SourcePath), - new Sub( - nameof(ModMakeHistory.LastTime), - history.LastTime.ToString("yyyy/MM/dd HH:mm") - ) - } - ); - } + lps.Add(LPSConvert.SerializeObjectToLine(history, nameof(history))); File.WriteAllText(ModMakerInfo.HistoryFile, lps.ToString()); } diff --git a/VPet.ModMaker/Views/ModEdit/I18nEdit/I18nEditWindow.xaml b/VPet.ModMaker/Views/ModEdit/I18nEdit/I18nEditWindow.xaml index dd44194..65cf257 100644 --- a/VPet.ModMaker/Views/ModEdit/I18nEdit/I18nEditWindow.xaml +++ b/VPet.ModMaker/Views/ModEdit/I18nEdit/I18nEditWindow.xaml @@ -32,6 +32,7 @@ ( + ObservableValue id, + I18nModel i18nModel, + Func> i18nValue + ) + where T : class, new() + { + if (AllData.TryGetValue(id.Value, out var outData)) + { + foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) + { + if (outData.Datas[culture.Index].Group is null) + { + var group = new ObservableValueGroup() { outData.Datas[culture.Index] }; + } + outData.Datas[culture.Index].Group!.Add( + i18nValue(i18nModel.I18nDatas[culture.Value]) + ); + } + } + else + { + var data = new I18nData(); + data.Id.Value = id.Value; + foreach (var culture in I18nHelper.Current.CultureNames) + data.Datas.Add(i18nValue(i18nModel.I18nDatas[culture])); + I18nDatas.Add(data); + AllData.Add(id.Value, data); + //id.ValueChanged += IdChange; + } + } + + private void IdChange(string oldValue, string newValue) + { + var sourceData = AllData[oldValue]; + sourceData.Id.Group?.Remove(sourceData.Id); + if (AllData.TryGetValue(oldValue, out var outData)) + { + foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) + { + if (outData.Datas[culture.Index].Group is null) + { + var group = new ObservableValueGroup() { outData.Datas[culture.Index] }; + } + outData.Datas[culture.Index].Group!.Add(sourceData.Datas[culture.Index]); + } + } + else + { + sourceData.Id.Value = newValue; + AllData.Remove(oldValue); + AllData.Add(newValue, sourceData); + } + } + + private void RemoveData( + ObservableValue id, + I18nModel i18nModel, + Func> i18nValue + ) + where T : class, new() + { + var data = AllData[id.Value]; + foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) + { + if (data.Datas[culture.Index].Group is ObservableValueGroup group) + { + group.Remove(i18nValue(i18nModel.I18nDatas[culture.Value])); + if (group.Count == 1) + { + group.Clear(); + return; + } + } + else + { + I18nDatas.Remove(data); + AllData.Remove(id.Value); + return; + } + } + } + + private void ReplaceData( + ObservableValue id, + I18nModel i18nModel, + Func> i18nValue + ) + where T : class, new() + { + var data = AllData[id.Value]; + foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) + { + var oldValue = data.Datas[culture.Index]; + var newValue = i18nValue(i18nModel.I18nDatas[culture.Value]); + if (oldValue.Group is ObservableValueGroup group) + { + group.Add(newValue); + group.Remove(oldValue); + } + data.Datas[culture.Index] = newValue; + } + } + private void LoadFood(ModInfoModel model) { foreach (var food in model.Foods) { - if (AllData.TryGetValue(food.Id.Value, out var outData)) - { - foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) - { - if (outData.Datas[culture.Index].Group is null) - { - var group = new ObservableValueGroup() - { - outData.Datas[culture.Index] - }; - } - outData.Datas[culture.Index].Group!.Add(food.I18nDatas[culture.Value].Name); - } - } - else - { - var data = new I18nData(); - data.Id.Value = food.Id.Value; - foreach (var culture in I18nHelper.Current.CultureNames) - data.Datas.Add(food.I18nDatas[culture].Name); - I18nDatas.Add(data); - AllData.Add(food.Id.Value, data); - } - if (AllData.TryGetValue(food.DescriptionId.Value, out var outData1)) - { - foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) - { - if (outData1.Datas[culture.Index].Group is null) - { - var group = new ObservableValueGroup() - { - outData1.Datas[culture.Index] - }; - } - outData1.Datas[culture.Index].Group!.Add( - food.I18nDatas[culture.Value].Description - ); - } - } - else - { - var data = new I18nData(); - data.Id.Value = food.DescriptionId.Value; - foreach (var culture in I18nHelper.Current.CultureNames) - data.Datas.Add(food.I18nDatas[culture].Description); - I18nDatas.Add(data); - AllData.Add(food.DescriptionId.Value, data); - } + AddData(food.Id, food, (m) => m.Name); + AddData(food.DescriptionId, food, (m) => m.Description); } + model.Foods.CollectionChanged += (s, e) => + { + if (e.Action is NotifyCollectionChangedAction.Add) + { + var newFood = (FoodModel)e.NewItems[0]; + AddData(newFood.Id, newFood, (m) => m.Name); + AddData(newFood.DescriptionId, newFood, (m) => m.Description); + } + else if (e.Action is NotifyCollectionChangedAction.Remove) + { + var oldFood = (FoodModel)e.OldItems[0]; + RemoveData(oldFood.Id, oldFood, (m) => m.Name); + RemoveData(oldFood.DescriptionId, oldFood, (m) => m.Description); + } + else if (e.Action is NotifyCollectionChangedAction.Replace) + { + var newFood = (FoodModel)e.NewItems[0]; + var oldFood = (FoodModel)e.OldItems[0]; + ReplaceData(newFood.Id, newFood, (m) => m.Name); + ReplaceData(newFood.DescriptionId, newFood, (m) => m.Description); + } + }; } private void LoadClickText(ModInfoModel model) { foreach (var text in model.ClickTexts) { - if (AllData.TryGetValue(text.Id.Value, out var outData)) - { - foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) - { - if (outData.Datas[culture.Index].Group is null) - { - var group = new ObservableValueGroup() - { - outData.Datas[culture.Index] - }; - } - outData.Datas[culture.Index].Group!.Add(text.I18nDatas[culture.Value].Text); - } - } - else - { - var data = new I18nData(); - data.Id.Value = text.Id.Value; - foreach (var culture in I18nHelper.Current.CultureNames) - data.Datas.Add(text.I18nDatas[culture].Text); - I18nDatas.Add(data); - AllData.Add(text.Id.Value, data); - } + AddData(text.Id, text, (m) => m.Text); } } @@ -178,29 +237,7 @@ public partial class I18nEditWindow : WindowX { foreach (var text in model.LowTexts) { - if (AllData.TryGetValue(text.Id.Value, out var outData)) - { - foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) - { - if (outData.Datas[culture.Index].Group is null) - { - var group = new ObservableValueGroup() - { - outData.Datas[culture.Index] - }; - } - outData.Datas[culture.Index].Group!.Add(text.I18nDatas[culture.Value].Text); - } - } - else - { - var data = new I18nData(); - data.Id.Value = text.Id.Value; - foreach (var culture in I18nHelper.Current.CultureNames) - data.Datas.Add(text.I18nDatas[culture].Text); - I18nDatas.Add(data); - AllData.Add(text.Id.Value, data); - } + AddData(text.Id, text, (m) => m.Text); } } @@ -208,52 +245,8 @@ public partial class I18nEditWindow : WindowX { foreach (var text in model.SelectTexts) { - if (AllData.TryGetValue(text.Id.Value, out var outData)) - { - foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) - { - if (outData.Datas[culture.Index].Group is null) - { - var group = new ObservableValueGroup() - { - outData.Datas[culture.Index] - }; - } - outData.Datas[culture.Index].Group!.Add(text.I18nDatas[culture.Value].Text); - } - } - else - { - var data = new I18nData(); - data.Id.Value = text.Id.Value; - foreach (var culture in I18nHelper.Current.CultureNames) - data.Datas.Add(text.I18nDatas[culture].Text); - I18nDatas.Add(data); - AllData.Add(text.Id.Value, data); - } - if (AllData.TryGetValue(text.ChooseId.Value, out var outData1)) - { - foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) - { - if (outData1.Datas[culture.Index].Group is null) - { - var group = new ObservableValueGroup() - { - outData1.Datas[culture.Index] - }; - } - outData1.Datas[culture.Index].Group!.Add(text.I18nDatas[culture.Value].Choose); - } - } - else - { - var data = new I18nData(); - data.Id.Value = text.ChooseId.Value; - foreach (var culture in I18nHelper.Current.CultureNames) - data.Datas.Add(text.I18nDatas[culture].Choose); - I18nDatas.Add(data); - AllData.Add(text.ChooseId.Value, data); - } + AddData(text.Id, text, (m) => m.Text); + AddData(text.ChooseId, text, (m) => m.Choose); } } @@ -263,92 +256,9 @@ public partial class I18nEditWindow : WindowX { if (pet.IsSimplePetModel) continue; - if (AllData.TryGetValue(pet.Id.Value, out var outData)) - { - foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) - { - if (outData.Datas[culture.Index].Group is null) - { - var group = new ObservableValueGroup() - { - outData.Datas[culture.Index] - }; - } - outData.Datas[culture.Index].Group!.Add(pet.I18nDatas[culture.Value].Name); - } - } - else - { - var data = new I18nData(); - data.Id.Value = pet.Id.Value; - foreach (var culture in I18nHelper.Current.CultureNames) - data.Datas.Add(pet.I18nDatas[culture].Name); - I18nDatas.Add(data); - AllData.Add(pet.Id.Value, data); - } - if (AllData.TryGetValue(pet.PetNameId.Value, out var outData1)) - { - foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) - { - if (outData1.Datas[culture.Index].Group is null) - { - var group = new ObservableValueGroup() - { - outData1.Datas[culture.Index] - }; - } - outData1.Datas[culture.Index].Group!.Add(pet.I18nDatas[culture.Value].PetName); - } - } - else - { - var data = new I18nData(); - data.Id.Value = pet.PetNameId.Value; - foreach (var culture in I18nHelper.Current.CultureNames) - data.Datas.Add(pet.I18nDatas[culture].PetName); - I18nDatas.Add(data); - AllData.Add(pet.PetNameId.Value, data); - } - if (AllData.TryGetValue(pet.DescriptionId.Value, out var outData2)) - { - foreach (var culture in I18nHelper.Current.CultureNames.Enumerate()) - { - if (outData2.Datas[culture.Index].Group is null) - { - var group = new ObservableValueGroup() - { - outData2.Datas[culture.Index] - }; - } - outData2.Datas[culture.Index].Group!.Add( - pet.I18nDatas[culture.Value].Description - ); - } - } - else - { - var data = new I18nData(); - data.Id.Value = pet.DescriptionId.Value; - foreach (var culture in I18nHelper.Current.CultureNames) - data.Datas.Add(pet.I18nDatas[culture].Description); - I18nDatas.Add(data); - AllData.Add(pet.DescriptionId.Value, data); - } - //var data = new I18nData(); - //var petNameData = new I18nData(); - //var descriptionData = new I18nData(); - //data.Id.Value = pet.Id.Value; - //petNameData.Id.Value = pet.PetNameId.Value; - //descriptionData.Id.Value = pet.DescriptionId.Value; - //foreach (var culture in I18nHelper.Current.CultureNames) - //{ - // data.Datas.Add(pet.I18nDatas[culture].Name); - // petNameData.Datas.Add(pet.I18nDatas[culture].PetName); - // descriptionData.Datas.Add(pet.I18nDatas[culture].Description); - //} - //I18nDatas.Add(data); - //I18nDatas.Add(petNameData); - //I18nDatas.Add(descriptionData); + AddData(pet.Id, pet, (m) => m.Name); + AddData(pet.PetNameId, pet, (m) => m.PetName); + AddData(pet.DescriptionId, pet, (m) => m.Description); } }