This commit is contained in:
xyy
2026-04-12 20:22:21 +08:00
parent e774c2374c
commit 690a7b587a
4 changed files with 47 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
namespace MembranePoreTester.Models
{
public class TestLiquid
public class TestLiquid : IEquatable<TestLiquid>
{
public string Name { get; set; }
public double SurfaceTension { get; set; } // mN/m, 25°C
@@ -10,7 +10,7 @@
public double C_cmHg => 2.15 * SurfaceTension;
public double C_psi => 0.415 * SurfaceTension;
public static List<TestLiquid> Predefined => new()
private static readonly List<TestLiquid> _predefined = new()
{
new TestLiquid { Name = "水", SurfaceTension = 72.0 },
new TestLiquid { Name = "石油馏分", SurfaceTension = 30.0 },
@@ -18,5 +18,21 @@
new TestLiquid { Name = "液态石蜡", SurfaceTension = 34.7 },
new TestLiquid { Name = "BSD16", SurfaceTension = 16.0 } // 新增
};
// 返回可修改的全局液体列表(允许在运行时添加自定义液体便于恢复选择)
public static List<TestLiquid> Predefined => _predefined;
public override string ToString() => Name;
public bool Equals(TestLiquid other)
{
if (other is null) return false;
// 以 Name 为主键判断相等SurfaceTension 可作为辅助信息
return string.Equals(Name, other.Name, StringComparison.Ordinal);
}
public override bool Equals(object obj) => Equals(obj as TestLiquid);
public override int GetHashCode() => Name?.GetHashCode() ?? 0;
}
}

View File

@@ -42,7 +42,7 @@ namespace MembranePoreTester.ViewModels
});
}
public List<TestLiquid> Liquids => TestLiquid.Predefined;
public IReadOnlyList<TestLiquid> Liquids => TestLiquid.Predefined;
public List<string> PressureUnits => new() { "Pa", "cmHg", "psi" };
public List<string> MembraneTypes => new() { "平板膜", "中空纤维膜" };

View File

@@ -243,11 +243,22 @@ namespace MembranePoreTester.ViewModels
{
// 当 Record 替换时(例如从数据库加载),重新订阅其 DataPoints 集合
HookDataPointsCollection(_record?.DataPoints);
// 同步液体选择
if (_record?.Liquid != null)
{
var matchedLiquid = Liquids.FirstOrDefault(l => l.Name == _record.Liquid.Name);
SelectedLiquid = matchedLiquid ?? _record.Liquid;
}
else
{
SelectedLiquid = Liquids.FirstOrDefault();
}
}
}
}
public List<TestLiquid> Liquids => TestLiquid.Predefined;
public IReadOnlyList<TestLiquid> Liquids => TestLiquid.Predefined;
public List<string> PressureUnits => new() { "Pa", "cmHg", "psi" };
public List<string> MembraneTypes => new() { "平板膜", "中空纤维膜" };
@@ -944,6 +955,20 @@ namespace MembranePoreTester.ViewModels
});
}
// 同步液体选择
if (Record.Liquid != null)
{
var matchedLiquid = Liquids.FirstOrDefault(l => l.Name == Record.Liquid.Name);
SelectedLiquid = matchedLiquid ?? Record.Liquid;
}
else
{
SelectedLiquid = Liquids.FirstOrDefault();
}
// 重新计算平均孔径和分布(触发计算命令)
Calculate();
}

View File

@@ -95,8 +95,8 @@ namespace MembranePoreTester.Views
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
ScrollDataGridToEnd(dgWetData);
ScrollDataGridToEnd(dgDryData);
//ScrollDataGridToEnd(dgWetData);
//ScrollDataGridToEnd(dgDryData);
}
}