在我的应用程序中,我使用PropertyGrid来设置与加载数据,设置场景等相关的属性。但是,当涉及到使用Vector3作为属性时,我有一个小问题。事实证明,如果我尝试使用OpenTK Vector3结构作为PropertyGrid的字段,它会停用该字段(它显示为灰色且无法更改)。我假设这是由于结构是不可变的,因此无法编辑。我想知道是否有办法解决这个问题。我知道我可以将自己的Vector3定义为一个类,但是我想继续使用OpenTK Vector3。
以下是我的应用程序的屏幕抓取:
这是PropertyGrid设置类:
using System.ComponentModel;
using OpenTK;
using StardustModeling.Modeling.IOFilters;
namespace StardustModeling.Modeling
{
public class ModelBuilderSceneSettings
{
[Description( "The name of the compiled model." ),
Category( "Information" )]
public string Name { get; set; } = "";
[Description( "The geometry data for the model." ),
Category( "Data" ),
Editor(
typeof( WavefrontModelFilter ) ,
typeof( System.Drawing.Design.UITypeEditor ) )]
public string GeometryMesh { get; set; } = "";
[Description( "The Diffuse Texture of the model." ),
Category( "Texturing" ), Editor(
typeof( BitmapFilter ) ,
typeof( System.Drawing.Design.UITypeEditor ) )]
public string Diffuse { get; set; } = "";
[Description( "The NormalMap for the model." ),
Category( "Texturing" ), Editor(
typeof( BitmapFilter ) ,
typeof( System.Drawing.Design.UITypeEditor ) )]
public string Normals { get; set; } = "";
[Description( "Position of the scene lamp." ),
Category( "Scene" )]
public Vector3 Lamp { get; set; } = new Vector3(2,2,2);
[Description( "Model Position." ),
Category( "Scene" )]
public Vector3 ModelLocation { get; set; } = new Vector3(); // Default 0,0,0
}
}
答案 0 :(得分:0)
快速解决,虽然不完全符合我的意图,但是使用字符串代替,格式为“x,y,z”,并在编辑字段时将其转换为Vector3。我认为这就是Visual Studio为其某些领域所做的事情。