using SpaceEngineersBlueprintEditor.Model; using VRage.Game; namespace SpaceEngineersBlueprintEditor.Utilities.Selector; /// /// 飞船蓝图目标项选择器 /// public partial class ShipBlueprintItemTemplateSelector : DataTemplateSelector { /// /// 默认模板项 /// public DataTemplate? DefaultTemplate { get; set; } /// /// 方块模板项 /// public DataTemplate? CubeItemTemplate { get; set; } /// /// 网格模板项 /// public DataTemplate? GridItemTemplate { get; set; } /// /// 对象模板项 /// public DataTemplate? ObjectItemTemplate { get; set; } /// /// 列表模板项 /// public DataTemplate? EnumerableTemplate { get; set; } /// /// 值类型模板项 /// public DataTemplate? ValueItemTemplate { get; set; } /// protected override DataTemplate? SelectTemplateCore(object item) { if (item is TreeViewNode treeViewNode && treeViewNode.Content is BlueprintPropertyViewData blueprintPropertyViewData) { if (blueprintPropertyViewData.IsBasicType) { return ValueItemTemplate; } else if (blueprintPropertyViewData.IsEnumerable) return EnumerableTemplate; else if (blueprintPropertyViewData.Type is not null) { if (blueprintPropertyViewData.Type.IsAssignableTo(typeof(MyObjectBuilder_CubeBlock))) return CubeItemTemplate; else if (blueprintPropertyViewData.Type.IsAssignableTo(typeof(MyObjectBuilder_CubeGrid))) return GridItemTemplate; else return ObjectItemTemplate; } else return ObjectItemTemplate; } return DefaultTemplate; } }