mirror of
https://github.com/LorisYounger/VPet.ModMaker.git
synced 2024-08-30 18:22:21 +00:00
实装 SelectTextEdit
This commit is contained in:
parent
4f1c92c82b
commit
22be8ad961
@ -30,7 +30,14 @@ public class FoodModel : I18nModel<I18nFoodModel>
|
||||
public ObservableValue<int> Exp { get; } = new();
|
||||
public ObservableValue<BitmapImage> Image { get; } = new();
|
||||
|
||||
public FoodModel() { }
|
||||
public FoodModel()
|
||||
{
|
||||
Description.Value = $"{Name.Value}_{nameof(Description)}";
|
||||
Name.ValueChanged += (v) =>
|
||||
{
|
||||
Description.Value = $"{v}_{nameof(Description)}";
|
||||
};
|
||||
}
|
||||
|
||||
public FoodModel(FoodModel food)
|
||||
: this()
|
||||
@ -81,7 +88,7 @@ public class FoodModel : I18nModel<I18nFoodModel>
|
||||
return new Food()
|
||||
{
|
||||
Name = Name.Value,
|
||||
Desc = $"{Name.Value}_{nameof(Description)}",
|
||||
Desc = Description.Value,
|
||||
Graph = Graph.Value,
|
||||
Type = Type.Value,
|
||||
Strength = Strength.Value,
|
||||
|
@ -34,9 +34,17 @@ public class ModInfoModel : I18nModel<I18nModInfoModel>
|
||||
|
||||
public Dictionary<string, Dictionary<string, string>> OtherI18nDatas { get; } = new();
|
||||
|
||||
public ModInfoModel() { }
|
||||
public ModInfoModel()
|
||||
{
|
||||
Description.Value = $"{Name.Value}_{nameof(Description)}";
|
||||
Name.ValueChanged += (v) =>
|
||||
{
|
||||
Description.Value = $"{v}_{nameof(Description)}";
|
||||
};
|
||||
}
|
||||
|
||||
public ModInfoModel(ModLoader loader)
|
||||
: this()
|
||||
{
|
||||
SourcePath.Value = loader.Path.FullName;
|
||||
Name.Value = loader.Name;
|
||||
@ -53,6 +61,9 @@ public class ModInfoModel : I18nModel<I18nModInfoModel>
|
||||
ClickTexts.Add(new(clickText));
|
||||
foreach (var lowText in loader.LowTexts)
|
||||
LowTexts.Add(new(lowText));
|
||||
foreach (var selectText in loader.SelectTexts)
|
||||
SelectTexts.Add(new(selectText));
|
||||
|
||||
Summary.Value = GetSummary();
|
||||
foreach (var lang in loader.I18nDatas)
|
||||
I18nDatas.Add(lang.Key, lang.Value);
|
||||
@ -123,9 +134,13 @@ public class ModInfoModel : I18nModel<I18nModInfoModel>
|
||||
|
||||
private void SaveFoods(string path)
|
||||
{
|
||||
if (Foods.Count == 0)
|
||||
return;
|
||||
var foodPath = Path.Combine(path, "food");
|
||||
if (Foods.Count == 0)
|
||||
{
|
||||
if (Directory.Exists(foodPath))
|
||||
Directory.Delete(foodPath, true);
|
||||
return;
|
||||
}
|
||||
Directory.CreateDirectory(foodPath);
|
||||
var foodFile = Path.Combine(foodPath, "food.lps");
|
||||
if (File.Exists(foodFile) is false)
|
||||
@ -138,12 +153,31 @@ public class ModInfoModel : I18nModel<I18nModInfoModel>
|
||||
|
||||
private void SaveText(string path)
|
||||
{
|
||||
if (LowTexts.Count == 0 && ClickTexts.Count == 0)
|
||||
return;
|
||||
var textPath = Path.Combine(path, "text");
|
||||
if (LowTexts.Count == 0 && ClickTexts.Count == 0 && SelectTexts.Count == 0)
|
||||
{
|
||||
if (Directory.Exists(textPath))
|
||||
Directory.Delete(textPath, true);
|
||||
return;
|
||||
}
|
||||
Directory.CreateDirectory(textPath);
|
||||
SaveLowText(textPath);
|
||||
SaveClickText(textPath);
|
||||
SaveSelectText(textPath);
|
||||
}
|
||||
|
||||
private void SaveSelectText(string textPath)
|
||||
{
|
||||
if (SelectTexts.Count == 0)
|
||||
return;
|
||||
var textFile = Path.Combine(textPath, "selectText.lps");
|
||||
File.Create(textFile).Close();
|
||||
var lps = new LPS();
|
||||
foreach (var text in SelectTexts)
|
||||
{
|
||||
lps.Add(LPSConvert.SerializeObjectToLine<Line>(text.ToSelectText(), "SelectText"));
|
||||
}
|
||||
File.WriteAllText(textFile, lps.ToString());
|
||||
}
|
||||
|
||||
private void SaveLowText(string textPath)
|
||||
@ -192,15 +226,18 @@ public class ModInfoModel : I18nModel<I18nModInfoModel>
|
||||
new Line(food.Description.Value, food.I18nDatas[cultureName].Description.Value)
|
||||
);
|
||||
}
|
||||
foreach (var lowText in LowTexts)
|
||||
foreach (var text in LowTexts)
|
||||
{
|
||||
lps.Add(new Line(lowText.Name.Value, lowText.I18nDatas[cultureName].Text.Value));
|
||||
lps.Add(new Line(text.Name.Value, text.I18nDatas[cultureName].Text.Value));
|
||||
}
|
||||
foreach (var clickText in ClickTexts)
|
||||
foreach (var text in ClickTexts)
|
||||
{
|
||||
lps.Add(
|
||||
new Line(clickText.Name.Value, clickText.I18nDatas[cultureName].Text.Value)
|
||||
);
|
||||
lps.Add(new Line(text.Name.Value, text.I18nDatas[cultureName].Text.Value));
|
||||
}
|
||||
foreach (var text in SelectTexts)
|
||||
{
|
||||
lps.Add(new Line(text.Name.Value, text.I18nDatas[cultureName].Text.Value));
|
||||
lps.Add(new Line(text.Choose.Value, text.I18nDatas[cultureName].Choose.Value));
|
||||
}
|
||||
File.WriteAllText(cultureFile, lps.ToString());
|
||||
}
|
||||
@ -217,7 +254,10 @@ public class ModInfoModel : I18nModel<I18nModInfoModel>
|
||||
foreach (var food in Foods)
|
||||
{
|
||||
var foodImagePath = Utils.GetImageSourceFile(food.Image.Value);
|
||||
var targetImagePath = Path.Combine(foodPath, Path.GetFileName(foodImagePath));
|
||||
var targetImagePath = Path.Combine(
|
||||
foodPath,
|
||||
$"{food.Name.Value}{Path.GetExtension(foodImagePath)}"
|
||||
);
|
||||
if (foodImagePath != targetImagePath)
|
||||
File.Copy(foodImagePath, targetImagePath, true);
|
||||
}
|
||||
|
@ -36,10 +36,12 @@ public class ModLoader
|
||||
public List<PetLoader> Pets { get; } = new();
|
||||
public List<Food> Foods { get; } = new();
|
||||
public List<LowText> LowTexts { get; } = new();
|
||||
public List<ClickText> ClickTexts { get; } = new();
|
||||
public List<SelectText> SelectTexts { get; } = new();
|
||||
|
||||
public Dictionary<string, I18nModInfoModel> I18nDatas { get; } = new();
|
||||
|
||||
public Dictionary<string, Dictionary<string, string>> OtherI18nDatas { get; } = new();
|
||||
public List<ClickText> ClickTexts { get; } = new();
|
||||
|
||||
public ModLoader(DirectoryInfo directory)
|
||||
{
|
||||
@ -142,11 +144,11 @@ public class ModLoader
|
||||
case "clicktext":
|
||||
ClickTexts.Add(LPSConvert.DeserializeObject<ClickText>(li));
|
||||
break;
|
||||
//case "selecttext":
|
||||
// mw.SelectTexts.Add(
|
||||
// LPSConvert.DeserializeObject<SelectText>(li)
|
||||
// );
|
||||
// break;
|
||||
case "selecttext":
|
||||
SelectTexts.Add(
|
||||
LPSConvert.DeserializeObject<SelectText>(li)
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,21 +6,128 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using VPet.ModMaker.Models;
|
||||
using VPet_Simulator.Windows.Interface;
|
||||
|
||||
namespace VPet.ModMaker.Models;
|
||||
|
||||
public class SelectTextModel : ClickTextModel
|
||||
public class SelectTextModel : I18nModel<I18nSelectTextModel>
|
||||
{
|
||||
public ObservableValue<int> Exp { get; } = new();
|
||||
public ObservableValue<double> Money { get; } = new();
|
||||
public ObservableValue<double> Strength { get; } = new();
|
||||
public ObservableValue<double> StrengthFood { get; } = new();
|
||||
public ObservableValue<double> StrengthDrink { get; } = new();
|
||||
public ObservableValue<double> Feeling { get; } = new();
|
||||
public ObservableValue<double> Health { get; } = new();
|
||||
public ObservableValue<double> Likability { get; } = new();
|
||||
public static ObservableCollection<ClickText.ModeType> ModeTypes => ClickTextModel.ModeTypes;
|
||||
|
||||
//public ObservableValue<int> Exp { get; } = new();
|
||||
//public ObservableValue<double> Money { get; } = new();
|
||||
//public ObservableValue<double> Strength { get; } = new();
|
||||
//public ObservableValue<double> StrengthFood { get; } = new();
|
||||
//public ObservableValue<double> StrengthDrink { get; } = new();
|
||||
//public ObservableValue<double> Feeling { get; } = new();
|
||||
//public ObservableValue<double> Health { get; } = new();
|
||||
//public ObservableValue<double> Likability { get; } = new();
|
||||
|
||||
public ObservableValue<string> Tags { get; } = new();
|
||||
public ObservableValue<string> ToTags { get; } = new();
|
||||
|
||||
public SelectTextModel() { }
|
||||
public ObservableValue<string> Name { get; } = new();
|
||||
public ObservableValue<string> Choose { get; } = new();
|
||||
public ObservableValue<ClickText.ModeType> Mode { get; } = new();
|
||||
|
||||
//public ObservableValue<string> Working { get; } = new();
|
||||
//public ObservableValue<VPet_Simulator.Core.Main.WorkingState> WorkingState { get; } = new();
|
||||
//public ObservableValue<ClickText.DayTime> DayTime { get; } = new();
|
||||
|
||||
public ObservableRange<double> Like { get; } = new(0, int.MaxValue);
|
||||
public ObservableRange<double> Health { get; } = new(0, int.MaxValue);
|
||||
public ObservableRange<double> Level { get; } = new(0, int.MaxValue);
|
||||
public ObservableRange<double> Money { get; } = new(int.MinValue, int.MaxValue);
|
||||
public ObservableRange<double> Food { get; } = new(0, int.MaxValue);
|
||||
public ObservableRange<double> Drink { get; } = new(0, int.MaxValue);
|
||||
public ObservableRange<double> Feel { get; } = new(0, int.MaxValue);
|
||||
public ObservableRange<double> Strength { get; } = new(0, int.MaxValue);
|
||||
|
||||
public SelectTextModel()
|
||||
{
|
||||
Choose.Value = $"{Name.Value}_{nameof(Choose)}";
|
||||
Name.ValueChanged += (v) =>
|
||||
{
|
||||
Choose.Value = $"{v}_{nameof(Choose)}";
|
||||
};
|
||||
}
|
||||
|
||||
public SelectTextModel(SelectTextModel model)
|
||||
: this()
|
||||
{
|
||||
Name.Value = model.Name.Value;
|
||||
Mode.Value = model.Mode.Value;
|
||||
//Working.Value = model.Working.Value;
|
||||
//WorkingState.Value = model.WorkingState.Value;
|
||||
//DayTime.Value = model.DayTime.Value;
|
||||
Like = model.Like.Copy();
|
||||
Health = model.Health.Copy();
|
||||
Level = model.Level.Copy();
|
||||
Money = model.Money.Copy();
|
||||
Food = model.Food.Copy();
|
||||
Drink = model.Drink.Copy();
|
||||
Feel = model.Feel.Copy();
|
||||
Strength = model.Strength.Copy();
|
||||
foreach (var item in model.I18nDatas)
|
||||
{
|
||||
I18nDatas[item.Key] = new();
|
||||
I18nDatas[item.Key].Text.Value = model.I18nDatas[item.Key].Text.Value;
|
||||
I18nDatas[item.Key].Choose.Value = model.I18nDatas[item.Key].Choose.Value;
|
||||
}
|
||||
CurrentI18nData.Value = I18nDatas[I18nHelper.Current.CultureName.Value];
|
||||
}
|
||||
|
||||
public SelectTextModel(SelectText text)
|
||||
: this()
|
||||
{
|
||||
Name.Value = text.Text;
|
||||
Choose.Value = text.Choose ?? string.Empty;
|
||||
Mode.Value = text.Mode;
|
||||
//Working.Value = text.Working;
|
||||
//WorkingState.Value = text.State;
|
||||
//DayTime.Value = text.DaiTime;
|
||||
Like.SetValue(text.LikeMin, text.LikeMax);
|
||||
Health.SetValue(text.HealthMin, text.HealthMax);
|
||||
Level.SetValue(text.LevelMin, text.LevelMax);
|
||||
Money.SetValue(text.MoneyMin, text.MoneyMax);
|
||||
Food.SetValue(text.FoodMin, text.FoodMax);
|
||||
Drink.SetValue(text.DrinkMin, text.DrinkMax);
|
||||
Feel.SetValue(text.FeelMin, text.FeelMax);
|
||||
Strength.SetValue(text.StrengthMin, text.StrengthMax);
|
||||
}
|
||||
|
||||
public SelectText ToSelectText()
|
||||
{
|
||||
return new()
|
||||
{
|
||||
Text = Name.Value,
|
||||
Choose = Choose.Value,
|
||||
Mode = Mode.Value,
|
||||
//Working = Working.Value,
|
||||
//State = WorkingState.Value,
|
||||
//DaiTime = DayTime.Value,
|
||||
LikeMax = Like.Max.Value,
|
||||
LikeMin = Like.Min.Value,
|
||||
HealthMin = Health.Min.Value,
|
||||
HealthMax = Health.Max.Value,
|
||||
LevelMin = Level.Min.Value,
|
||||
LevelMax = Level.Max.Value,
|
||||
MoneyMin = Money.Min.Value,
|
||||
MoneyMax = Money.Max.Value,
|
||||
FoodMin = Food.Min.Value,
|
||||
FoodMax = Food.Max.Value,
|
||||
DrinkMin = Drink.Min.Value,
|
||||
DrinkMax = Drink.Max.Value,
|
||||
FeelMin = Feel.Min.Value,
|
||||
FeelMax = Feel.Max.Value,
|
||||
StrengthMin = Strength.Min.Value,
|
||||
StrengthMax = Strength.Max.Value,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class I18nSelectTextModel
|
||||
{
|
||||
public ObservableValue<string> Choose { get; } = new();
|
||||
public ObservableValue<string> Text { get; } = new();
|
||||
}
|
||||
|
@ -112,6 +112,8 @@
|
||||
<Compile Include="ViewModels\ModEdit\ModEditWindowVM.cs" />
|
||||
<Compile Include="ViewModels\ModEdit\PetEdit\PetEditWindowVM.cs" />
|
||||
<Compile Include="ViewModels\ModEdit\PetEdit\PetPageVM.cs" />
|
||||
<Compile Include="ViewModels\ModEdit\SelectTextEdit\SelectTextEditWindowVM.cs" />
|
||||
<Compile Include="ViewModels\ModEdit\SelectTextEdit\SelectTextPageVM.cs" />
|
||||
<Compile Include="Views\ModEdit\ClickTextEdit\ClickTextPage.xaml.cs">
|
||||
<DependentUpon>ClickTextPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@ -262,8 +264,6 @@
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="ViewModels\ModEdit\SelectTextEdit\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
@ -51,28 +51,36 @@ public class ModEditWindowVM
|
||||
if (I18nHelper.Current.CultureNames.Count > 0)
|
||||
{
|
||||
I18nHelper.Current.CultureName.Value = I18nHelper.Current.CultureNames.First();
|
||||
foreach (var i18n in ModInfo.Value.OtherI18nDatas)
|
||||
foreach (var i18nData in ModInfo.Value.OtherI18nDatas)
|
||||
{
|
||||
foreach (var food in ModInfo.Value.Foods)
|
||||
{
|
||||
var foodI18n = food.I18nDatas[i18n.Key];
|
||||
if (i18n.Value.TryGetValue(food.Name.Value, out var name))
|
||||
var foodI18n = food.I18nDatas[i18nData.Key];
|
||||
if (i18nData.Value.TryGetValue(food.Name.Value, out var name))
|
||||
foodI18n.Name.Value = name;
|
||||
if (i18n.Value.TryGetValue(food.Description.Value, out var description))
|
||||
if (i18nData.Value.TryGetValue(food.Description.Value, out var description))
|
||||
foodI18n.Description.Value = description;
|
||||
}
|
||||
foreach (var lowText in ModInfo.Value.LowTexts)
|
||||
{
|
||||
var lowTextI18n = lowText.I18nDatas[i18n.Key];
|
||||
if (i18n.Value.TryGetValue(lowText.Name.Value, out var text))
|
||||
var lowTextI18n = lowText.I18nDatas[i18nData.Key];
|
||||
if (i18nData.Value.TryGetValue(lowText.Name.Value, out var text))
|
||||
lowTextI18n.Text.Value = text;
|
||||
}
|
||||
foreach (var clickText in ModInfo.Value.ClickTexts)
|
||||
{
|
||||
var clickTextI18n = clickText.I18nDatas[i18n.Key];
|
||||
if (i18n.Value.TryGetValue(clickText.Name.Value, out var text))
|
||||
var clickTextI18n = clickText.I18nDatas[i18nData.Key];
|
||||
if (i18nData.Value.TryGetValue(clickText.Name.Value, out var text))
|
||||
clickTextI18n.Text.Value = text;
|
||||
}
|
||||
foreach (var selectText in ModInfo.Value.SelectTexts)
|
||||
{
|
||||
var selectTextI18n = selectText.I18nDatas[i18nData.Key];
|
||||
if (i18nData.Value.TryGetValue(selectText.Name.Value, out var text))
|
||||
selectTextI18n.Text.Value = text;
|
||||
if (i18nData.Value.TryGetValue(selectText.Choose.Value, out var choose))
|
||||
selectTextI18n.Choose.Value = choose;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,17 @@
|
||||
using HKW.HKWViewModels.SimpleObservable;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using VPet.ModMaker.Models;
|
||||
|
||||
namespace VPet.ModMaker.ViewModels.ModEdit.SelectTextEdit;
|
||||
|
||||
public class SelectTextEditWindowVM
|
||||
{
|
||||
#region Value
|
||||
public SelectTextModel OldSelectText { get; set; }
|
||||
public ObservableValue<SelectTextModel> SelectText { get; } = new(new());
|
||||
#endregion
|
||||
}
|
@ -0,0 +1,95 @@
|
||||
using HKW.HKWViewModels.SimpleObservable;
|
||||
using LinePutScript.Localization.WPF;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using VPet.ModMaker.Models;
|
||||
using VPet.ModMaker.Views.ModEdit.SelectTextEdit;
|
||||
|
||||
namespace VPet.ModMaker.ViewModels.ModEdit.SelectTextEdit;
|
||||
|
||||
public class SelectTextPageVM
|
||||
{
|
||||
#region Value
|
||||
public ObservableValue<ObservableCollection<SelectTextModel>> ShowSelectTexts { get; } = new();
|
||||
public ObservableCollection<SelectTextModel> SelectTexts => ModInfoModel.Current.SelectTexts;
|
||||
public ObservableValue<string> FilterSelectText { get; } = new();
|
||||
#endregion
|
||||
#region Command
|
||||
public ObservableCommand AddSelectTextCommand { get; } = new();
|
||||
public ObservableCommand<SelectTextModel> EditSelectTextCommand { get; } = new();
|
||||
public ObservableCommand<SelectTextModel> RemoveSelectTextCommand { get; } = new();
|
||||
#endregion
|
||||
|
||||
public SelectTextPageVM()
|
||||
{
|
||||
ShowSelectTexts.Value = SelectTexts;
|
||||
FilterSelectText.ValueChanged += FilterSelectText_ValueChanged;
|
||||
AddSelectTextCommand.ExecuteEvent += AddSelectText;
|
||||
EditSelectTextCommand.ExecuteEvent += EditSelectText;
|
||||
RemoveSelectTextCommand.ExecuteEvent += RemoveSelectText;
|
||||
}
|
||||
|
||||
private void FilterSelectText_ValueChanged(string value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
ShowSelectTexts.Value = SelectTexts;
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowSelectTexts.Value = new(
|
||||
SelectTexts.Where(f => f.CurrentI18nData.Value.Text.Value.Contains(value))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private void AddSelectText()
|
||||
{
|
||||
var window = new SelectTextEditWindow();
|
||||
var vm = window.ViewModel;
|
||||
window.ShowDialog();
|
||||
if (window.IsCancel)
|
||||
return;
|
||||
SelectTexts.Add(vm.SelectText.Value);
|
||||
}
|
||||
|
||||
public void EditSelectText(SelectTextModel model)
|
||||
{
|
||||
var window = new SelectTextEditWindow();
|
||||
var vm = window.ViewModel;
|
||||
vm.OldSelectText = model;
|
||||
var newLowTest = vm.SelectText.Value = new(model);
|
||||
window.ShowDialog();
|
||||
if (window.IsCancel)
|
||||
return;
|
||||
if (ShowSelectTexts.Value.Count == SelectTexts.Count)
|
||||
{
|
||||
SelectTexts[SelectTexts.IndexOf(model)] = newLowTest;
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectTexts[SelectTexts.IndexOf(model)] = newLowTest;
|
||||
ShowSelectTexts.Value[ShowSelectTexts.Value.IndexOf(model)] = newLowTest;
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveSelectText(SelectTextModel model)
|
||||
{
|
||||
if (MessageBox.Show("确定删除吗".Translate(), "", MessageBoxButton.YesNo) is MessageBoxResult.No)
|
||||
return;
|
||||
if (ShowSelectTexts.Value.Count == SelectTexts.Count)
|
||||
{
|
||||
SelectTexts.Remove(model);
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowSelectTexts.Value.Remove(model);
|
||||
SelectTexts.Remove(model);
|
||||
}
|
||||
}
|
||||
}
|
@ -42,7 +42,7 @@
|
||||
x:Name="TextBox_Text"
|
||||
Grid.Row="1"
|
||||
d:Text="这是一个测试文本,这是一个测试文本,这是一个测试文本,这是一个测试文本,这是一个测试文本,这是一个测试文本,这是一个测试文本,"
|
||||
pu:TextBoxHelper.Watermark="文本"
|
||||
pu:TextBoxHelper.Watermark="{ll:Str 文本}"
|
||||
Style="{StaticResource TextBox_Wrap}"
|
||||
Text="{Binding ClickText.Value.CurrentI18nData.Value.Text.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
</Grid>
|
||||
@ -66,7 +66,10 @@
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<Label Content="{ll:Str 指定工作}" />
|
||||
<TextBox Grid.Column="1" Text="{Binding ClickText.Value.Working.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<TextBox
|
||||
Grid.Column="1"
|
||||
pu:TextBoxHelper.Watermark="{ll:Str 非必要}"
|
||||
Text="{Binding ClickText.Value.Working.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<Label Grid.Row="3" Content="{ll:Str 模式}" />
|
||||
<ComboBox
|
||||
Grid.Row="3"
|
||||
|
@ -34,10 +34,7 @@
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox
|
||||
x:Name="TextBox_SearchFood"
|
||||
pu:TextBoxHelper.Watermark="{ll:Str 搜索文本}"
|
||||
Text="{Binding FilterClickText.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<TextBox pu:TextBoxHelper.Watermark="{ll:Str 搜索文本}" Text="{Binding FilterClickText.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<DataGrid
|
||||
x:Name="DataGrid_ClickText"
|
||||
Grid.Row="1"
|
||||
|
@ -160,12 +160,12 @@
|
||||
Tag="{ll:Str 低状态文本}">
|
||||
<Frame Content="{Binding ModEditWindow.LowTextPage}" />
|
||||
</TabItem>
|
||||
<!--<TabItem
|
||||
<TabItem
|
||||
x:Name="TabItem_SelectText"
|
||||
Header="选择文本 (0)"
|
||||
Tag="{ll:Str 选择文本}">
|
||||
<Frame Content="{Binding ModEditWindow.LowTextPage}" />
|
||||
</TabItem>-->
|
||||
<Frame Content="{Binding ModEditWindow.SelectTextPage}" />
|
||||
</TabItem>
|
||||
<!--<TabItem Header="物品 (0)" Tag="{ll:Str 物品}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
|
@ -20,6 +20,7 @@ using VPet.ModMaker.ViewModels.ModEdit;
|
||||
using VPet.ModMaker.Views.ModEdit.ClickTextEdit;
|
||||
using VPet.ModMaker.Views.ModEdit.FoodEdit;
|
||||
using VPet.ModMaker.Views.ModEdit.LowTextEdit;
|
||||
using VPet.ModMaker.Views.ModEdit.SelectTextEdit;
|
||||
using VPet_Simulator.Windows.Interface;
|
||||
|
||||
namespace VPet.ModMaker.Views.ModEdit;
|
||||
@ -34,6 +35,8 @@ public partial class ModEditWindow : Window
|
||||
public LowTextPage LowTextPage { get; } = new();
|
||||
public ClickTextPage ClickTextPage { get; } = new();
|
||||
|
||||
public SelectTextPage SelectTextPage { get; } = new();
|
||||
|
||||
public ModEditWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -43,10 +46,19 @@ public partial class ModEditWindow : Window
|
||||
FoodPage.ViewModel.Foods.CollectionChanged += Foods_CollectionChanged;
|
||||
LowTextPage.ViewModel.LowTexts.CollectionChanged += LowTexts_CollectionChanged;
|
||||
ClickTextPage.ViewModel.ClickTexts.CollectionChanged += ClickTexts_CollectionChanged;
|
||||
SelectTextPage.ViewModel.SelectTexts.CollectionChanged += SelectTexts_CollectionChanged;
|
||||
TabItem_ClickText.Header =
|
||||
$"{TabItem_ClickText.Tag} ({ClickTextPage.ViewModel.ClickTexts.Count})";
|
||||
TabItem_LowText.Header = $"{TabItem_LowText.Tag} ({LowTextPage.ViewModel.LowTexts.Count})";
|
||||
TabItem_Food.Header = $"{TabItem_Food.Tag} ({FoodPage.ViewModel.Foods.Count})";
|
||||
TabItem_SelectText.Header =
|
||||
$"{TabItem_SelectText.Tag} ({SelectTextPage.ViewModel.SelectTexts.Count})";
|
||||
}
|
||||
|
||||
private void SelectTexts_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
||||
{
|
||||
TabItem_SelectText.Header =
|
||||
$"{TabItem_SelectText.Tag} ({SelectTextPage.ViewModel.SelectTexts.Count})";
|
||||
}
|
||||
|
||||
private void ClickTexts_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
||||
|
@ -7,10 +7,14 @@
|
||||
xmlns:local="clr-namespace:VPet.ModMaker.Views.ModEdit.SelectTextEdit"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:pu="https://opensource.panuon.com/wpf-ui"
|
||||
xmlns:vm="clr-namespace:VPet.ModMaker.ViewModels.ModEdit.SelectTextEdit"
|
||||
Title="SelectTextWindow"
|
||||
Width="800"
|
||||
Height="450"
|
||||
mc:Ignorable="d">
|
||||
<d:Window.DataContext>
|
||||
<vm:SelectTextEditWindowVM />
|
||||
</d:Window.DataContext>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
@ -26,21 +30,33 @@
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label Content="Id" />
|
||||
<TextBox
|
||||
Grid.Column="1"
|
||||
pu:TextBoxHelper.Watermark="Id"
|
||||
Style="{StaticResource TextBox_Wrap}"
|
||||
Text="{Binding ClickText.Value.Name.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
Text="{Binding SelectText.Value.Name.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
TextWrapping="Wrap" />
|
||||
<Label Grid.Row="1" Content="{ll:Str 选项名}" />
|
||||
<TextBox
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
pu:TextBoxHelper.Watermark="{ll:Str 显示在选项列表中的名称}"
|
||||
Style="{StaticResource TextBox_Wrap}"
|
||||
Text="{Binding SelectText.Value.CurrentI18nData.Value.Choose.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
TextWrapping="Wrap" />
|
||||
</Grid>
|
||||
<TextBox
|
||||
x:Name="TextBox_Text"
|
||||
Grid.Row="1"
|
||||
Grid.Row="2"
|
||||
d:Text="这是一个测试文本,这是一个测试文本,这是一个测试文本,这是一个测试文本,这是一个测试文本,这是一个测试文本,这是一个测试文本,"
|
||||
pu:TextBoxHelper.Watermark="文本"
|
||||
pu:TextBoxHelper.Watermark="{ll:Str 文本}"
|
||||
Style="{StaticResource TextBox_Wrap}"
|
||||
Text="{Binding ClickText.Value.CurrentI18nData.Value.Text.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
Text="{Binding SelectText.Value.CurrentI18nData.Value.Text.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
</Grid>
|
||||
<Grid Grid.Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
@ -60,38 +76,77 @@
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<Label Content="{ll:Str 指定工作}" />
|
||||
<TextBox Grid.Column="1" Text="{Binding ClickText.Value.Working.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<Label Grid.Row="1" Content="{ll:Str 最小好感度}" />
|
||||
<pu:NumberInput
|
||||
Grid.Row="1"
|
||||
<!--<Label Content="{ll:Str 指定工作}" />
|
||||
<TextBox
|
||||
Grid.Column="1"
|
||||
Margin="0"
|
||||
Value="{Binding ClickText.Value.LikeMin.Value}" />
|
||||
<Label Grid.Row="2" Content="{ll:Str 最大好感度}" />
|
||||
<pu:NumberInput
|
||||
pu:TextBoxHelper.Watermark="{ll:Str 非必要}"
|
||||
Text="{Binding SelectText.Value.Working.Value, UpdateSourceTrigger=PropertyChanged}" />-->
|
||||
<Label Grid.Row="2" Content="{ll:Str 标签}" />
|
||||
<TextBox
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Value="{Binding ClickText.Value.LikeMax.Value}" />
|
||||
<Label Grid.Row="3" Content="{ll:Str 模式}" />
|
||||
<ComboBox
|
||||
pu:TextBoxHelper.Watermark="{ll:Str 多标签使用逗号分隔}"
|
||||
Text="{Binding SelectText.Value.Tags.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<Label Grid.Row="3" Content="{ll:Str 跳转标签}" />
|
||||
<TextBox
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
ItemsSource="{Binding ModeTypes}"
|
||||
SelectedItem="{Binding ClickText.Value.Mode.Value}" />
|
||||
<Label Grid.Row="4" Content="{ll:Str 工作状态}" />
|
||||
pu:TextBoxHelper.Watermark="{ll:Str 多标签使用逗号分隔}"
|
||||
Text="{Binding SelectText.Value.ToTags.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<Label Grid.Row="4" Content="{ll:Str 模式}" />
|
||||
<ComboBox
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
ItemsSource="{Binding WorkingStates}"
|
||||
SelectedItem="{Binding ClickText.Value.WorkingState.Value}" />
|
||||
<Label Grid.Row="5" Content="{ll:Str 日期区间}" />
|
||||
ItemsSource="{Binding SelectText.Value.ModeTypes}"
|
||||
SelectedItem="{Binding SelectText.Value.Mode.Value}" />
|
||||
<!--<Label Grid.Row="5" Content="{ll:Str 工作状态}" />
|
||||
<ComboBox
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
ItemsSource="{Binding DayTimes}"
|
||||
SelectedItem="{Binding ClickText.Value.DayTime.Value}" />
|
||||
ItemsSource="{Binding SelectText.Value.WorkingStates}"
|
||||
SelectedItem="{Binding SelectText.Value.WorkingState.Value}" />
|
||||
<Label Grid.Row="6" Content="{ll:Str 日期区间}" />
|
||||
<ComboBox
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"
|
||||
ItemsSource="{Binding SelectText.Value.DayTimes}"
|
||||
SelectedItem="{Binding SelectText.Value.DayTime.Value}" />-->
|
||||
<ListBox Grid.Row="7" Grid.ColumnSpan="2">
|
||||
<ListBoxItem
|
||||
DataContext="{Binding SelectText.Value.Like}"
|
||||
Tag="{ll:Str 好感度范围}"
|
||||
Template="{StaticResource ListBoxItem_RangeData}" />
|
||||
<ListBoxItem
|
||||
DataContext="{Binding SelectText.Value.Health}"
|
||||
Tag="{ll:Str 健康度范围}"
|
||||
Template="{StaticResource ListBoxItem_RangeData}" />
|
||||
<ListBoxItem
|
||||
DataContext="{Binding SelectText.Value.Level}"
|
||||
Tag="{ll:Str 等级范围}"
|
||||
Template="{StaticResource ListBoxItem_RangeData}" />
|
||||
<ListBoxItem
|
||||
DataContext="{Binding SelectText.Value.Money}"
|
||||
Tag="{ll:Str 金钱范围}"
|
||||
Template="{StaticResource ListBoxItem_RangeData}" />
|
||||
<ListBoxItem
|
||||
DataContext="{Binding SelectText.Value.Food}"
|
||||
Tag="{ll:Str 食物范围}"
|
||||
Template="{StaticResource ListBoxItem_RangeData}" />
|
||||
<ListBoxItem
|
||||
DataContext="{Binding SelectText.Value.Drink}"
|
||||
Tag="{ll:Str 口渴范围}"
|
||||
Template="{StaticResource ListBoxItem_RangeData}" />
|
||||
<ListBoxItem
|
||||
DataContext="{Binding SelectText.Value.Feel}"
|
||||
Tag="{ll:Str 心情范围}"
|
||||
Template="{StaticResource ListBoxItem_RangeData}" />
|
||||
<ListBoxItem
|
||||
DataContext="{Binding SelectText.Value.Strength}"
|
||||
Tag="{ll:Str 体力范围}"
|
||||
Template="{StaticResource ListBoxItem_RangeData}" />
|
||||
</ListBox>
|
||||
</Grid>
|
||||
<Grid Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using LinePutScript.Localization.WPF;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@ -11,6 +12,8 @@ using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using VPet.ModMaker.Models;
|
||||
using VPet.ModMaker.ViewModels.ModEdit.SelectTextEdit;
|
||||
|
||||
namespace VPet.ModMaker.Views.ModEdit.SelectTextEdit;
|
||||
|
||||
@ -19,9 +22,13 @@ namespace VPet.ModMaker.Views.ModEdit.SelectTextEdit;
|
||||
/// </summary>
|
||||
public partial class SelectTextEditWindow : Window
|
||||
{
|
||||
public bool IsCancel { get; private set; } = true;
|
||||
public SelectTextEditWindowVM ViewModel => (SelectTextEditWindowVM)DataContext;
|
||||
|
||||
public SelectTextEditWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
DataContext = new SelectTextEditWindowVM();
|
||||
}
|
||||
|
||||
private void Button_Cancel_Click(object sender, RoutedEventArgs e)
|
||||
@ -31,27 +38,39 @@ public partial class SelectTextEditWindow : Window
|
||||
|
||||
private void Button_Yes_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//if (string.IsNullOrEmpty(ViewModel.ClickText.Value.Name.Value))
|
||||
//{
|
||||
// MessageBox.Show("Id不可为空".Translate(), "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
// return;
|
||||
//}
|
||||
//if (
|
||||
// ViewModel.OldClickText?.Name.Value != ViewModel.ClickText.Value.Name.Value
|
||||
// && ModInfoModel.Current.ClickTexts.Any(
|
||||
// i => i.Name.Value == ViewModel.ClickText.Value.Name.Value
|
||||
// )
|
||||
//)
|
||||
//{
|
||||
// MessageBox.Show("此Id已存在".Translate(), "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
// return;
|
||||
//}
|
||||
//if (string.IsNullOrEmpty(ViewModel.ClickText.Value.CurrentI18nData.Value.Text.Value))
|
||||
//{
|
||||
// MessageBox.Show("文本不可为空".Translate(), "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
// return;
|
||||
//}
|
||||
//IsCancel = false;
|
||||
if (string.IsNullOrWhiteSpace(ViewModel.SelectText.Value.Name.Value))
|
||||
{
|
||||
MessageBox.Show("Id不可为空".Translate(), "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
return;
|
||||
}
|
||||
if (
|
||||
ViewModel.OldSelectText?.Name.Value != ViewModel.SelectText.Value.Name.Value
|
||||
&& ModInfoModel.Current.SelectTexts.Any(
|
||||
i => i.Name.Value == ViewModel.SelectText.Value.Name.Value
|
||||
)
|
||||
)
|
||||
{
|
||||
MessageBox.Show("此Id已存在".Translate(), "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
return;
|
||||
}
|
||||
if (
|
||||
string.IsNullOrWhiteSpace(ViewModel.SelectText.Value.CurrentI18nData.Value.Choose.Value)
|
||||
)
|
||||
{
|
||||
MessageBox.Show(
|
||||
"选项名不可为空".Translate(),
|
||||
"",
|
||||
MessageBoxButton.OK,
|
||||
MessageBoxImage.Warning
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(ViewModel.SelectText.Value.CurrentI18nData.Value.Text.Value))
|
||||
{
|
||||
MessageBox.Show("文本不可为空".Translate(), "", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
return;
|
||||
}
|
||||
IsCancel = false;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
|
@ -7,27 +7,30 @@
|
||||
xmlns:local="clr-namespace:VPet.ModMaker.Views.ModEdit.SelectTextEdit"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:pu="https://opensource.panuon.com/wpf-ui"
|
||||
xmlns:vm="clr-namespace:VPet.ModMaker.ViewModels.ModEdit.SelectTextEdit"
|
||||
Title="SelectTextPage"
|
||||
d:DesignHeight="450"
|
||||
d:DesignWidth="800"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<d:Page.DataContext>
|
||||
<vm:SelectTextPageVM />
|
||||
</d:Page.DataContext>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox />
|
||||
<TextBox pu:TextBoxHelper.Watermark="{ll:Str 搜索文本}" Text="{Binding FilterSelectText.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<DataGrid
|
||||
x:Name="DataGrid_ClickText"
|
||||
x:Name="DataGrid_SelectText"
|
||||
Grid.Row="1"
|
||||
d:ItemsSource="{d:SampleData ItemCount=5}"
|
||||
pu:DataGridHelper.ColumnHeaderHorizontalContentAlignment="Center"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserAddRows="False"
|
||||
GridLinesVisibility="Horizontal"
|
||||
ItemsSource="{Binding ShowClickTexts.Value}"
|
||||
MouseDoubleClick="DataGrid_ClickText_MouseDoubleClick"
|
||||
ItemsSource="{Binding ShowSelectTexts.Value}"
|
||||
MouseDoubleClick="DataGrid_SelectText_MouseDoubleClick"
|
||||
RowDetailsVisibilityMode="Visible"
|
||||
RowHeight="64"
|
||||
VirtualizingStackPanel.IsVirtualizing="True"
|
||||
@ -48,7 +51,18 @@
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="Name.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<Label Content="Id" />
|
||||
<TextBlock Text="Id" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
MaxWidth="200"
|
||||
Binding="{Binding CurrentI18nData.Value.Choose.Value}"
|
||||
CanUserSort="True"
|
||||
ElementStyle="{StaticResource TextBlock_Wrap}"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="CurrentI18nData.Value.Choose.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<TextBlock Text="{ll:Str 选择名}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
@ -59,7 +73,29 @@
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="CurrentI18nData.Value.Text.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<Label Content="{ll:Str 文本}" />
|
||||
<TextBlock Text="{ll:Str 文本}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
MaxWidth="200"
|
||||
Binding="{Binding Tags.Value}"
|
||||
CanUserSort="True"
|
||||
ElementStyle="{StaticResource TextBlock_Wrap}"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="Tags.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<TextBlock Text="{ll:Str 标签}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
MaxWidth="200"
|
||||
Binding="{Binding ToTags.Value}"
|
||||
CanUserSort="True"
|
||||
ElementStyle="{StaticResource TextBlock_Wrap}"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="ToTags.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<TextBlock Text="{ll:Str 跳转标签}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
@ -68,55 +104,89 @@
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="Mode.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<Label Content="{ll:Str 状态}" />
|
||||
<TextBlock Text="{ll:Str 状态}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
Binding="{Binding Working.Value}"
|
||||
Binding="{Binding Like.Info.Value}"
|
||||
CanUserSort="True"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="Working.Value">
|
||||
SortMemberPath="Like.Info.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<Label Content="{ll:Str 指定工作}" />
|
||||
<TextBlock Text="{ll:Str 好感度范围}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
Binding="{Binding WorkingState.Value}"
|
||||
Binding="{Binding Health.Info.Value}"
|
||||
CanUserSort="True"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="WorkingState.Value">
|
||||
SortMemberPath="Health.Info.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<Label Content="{ll:Str 工作状态}" />
|
||||
<TextBlock Text="{ll:Str 健康度范围}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
Binding="{Binding LikeMin.Value}"
|
||||
Binding="{Binding Level.Info.Value}"
|
||||
CanUserSort="True"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="LikeMin.Value">
|
||||
SortMemberPath="Level.Info.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<Label Content="{ll:Str 最小好感}" />
|
||||
<TextBlock Text="{ll:Str 等级范围}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
Binding="{Binding LikeMax.Value}"
|
||||
Binding="{Binding Money.Info.Value}"
|
||||
CanUserSort="True"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="LikeMax.Value">
|
||||
SortMemberPath="Money.Info.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<Label Content="{ll:Str 最大好感}" />
|
||||
<TextBlock Text="{ll:Str 金钱范围}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
Binding="{Binding DayTime.Value}"
|
||||
Binding="{Binding Food.Info.Value}"
|
||||
CanUserSort="True"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="DayTime.Value">
|
||||
SortMemberPath="Food.Info.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<Label Content="{ll:Str 时间}" />
|
||||
<TextBlock Text="{ll:Str 食物范围}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
Binding="{Binding Drink.Info.Value}"
|
||||
CanUserSort="True"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="Drink.Info.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<TextBlock Text="{ll:Str 口渴范围}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
Binding="{Binding Feel.Info.Value}"
|
||||
CanUserSort="True"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="Feel.Info.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<TextBlock Text="{ll:Str 心情范围}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
Binding="{Binding Strength.Info.Value}"
|
||||
CanUserSort="True"
|
||||
IsReadOnly="True"
|
||||
SortMemberPath="Strength.Info.Value">
|
||||
<DataGridTextColumn.Header>
|
||||
<TextBlock Text="{ll:Str 体力范围}" />
|
||||
</DataGridTextColumn.Header>
|
||||
</DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<Button
|
||||
Grid.Row="1"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Command="{Binding AddSelectTextCommand}"
|
||||
Content="➕"
|
||||
Style="{StaticResource AddButton}" />
|
||||
</Grid>
|
||||
</Page>
|
||||
|
@ -12,6 +12,8 @@ using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using VPet.ModMaker.Models;
|
||||
using VPet.ModMaker.ViewModels.ModEdit.SelectTextEdit;
|
||||
|
||||
namespace VPet.ModMaker.Views.ModEdit.SelectTextEdit;
|
||||
|
||||
@ -20,17 +22,21 @@ namespace VPet.ModMaker.Views.ModEdit.SelectTextEdit;
|
||||
/// </summary>
|
||||
public partial class SelectTextPage : Page
|
||||
{
|
||||
public SelectTextPageVM ViewModel => (SelectTextPageVM)DataContext;
|
||||
|
||||
public SelectTextPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
DataContext = new SelectTextPageVM();
|
||||
}
|
||||
|
||||
private void DataGrid_ClickText_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
private void DataGrid_SelectText_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
//if (
|
||||
// sender is not DataGrid dataGrid || dataGrid.SelectedItem is not ClickTextModel clickText
|
||||
//)
|
||||
// return;
|
||||
//ViewModel.EditClickText(clickText);
|
||||
if (
|
||||
sender is not DataGrid dataGrid
|
||||
|| dataGrid.SelectedItem is not SelectTextModel clickText
|
||||
)
|
||||
return;
|
||||
ViewModel.EditSelectText(clickText);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user