bodong1987 / Avalonia.PropertyGrid

A property edit control in Avalonia like DevExpress's PropertyGridControl.
https://www.cnblogs.com/bodong
MIT License
187 stars 18 forks source link

如下需求 #32

Closed snikeguo closed 3 months ago

snikeguo commented 4 months ago

有如下需求,

class Board
{
   public string Name{get.set};
   public ....//userData;
}
class ChoiceBoard
{
   public List<Board> AllBoards{get set}=new .... //假定集合里面已经有两个board ,一个叫stm32  一个叫S32K
   public Board SelectedBoard{get;set;}
}

class MainMenu
{
      [DisplayName("ChoiceBoard")]
      public  ChoiceBoard  ChoiceBoard{get;set;} 
}

我希望得到如下界面,会有类似于Enum一样的下拉选择框,由用户去选择是STM32还是S32K。 当然这个下选中不同的下拉框他的Description啥的都不一样。这样用户就直观的看到了。目前来说,我使用SelectableList+我自己的类实现toString()可以显示出来,不过做不到Description那些也显示出来。 可以讨论一下,我正在开发一个替换kconfig的一个开源软件。 image 这里我成功的显示出来了TC397 但是TC397这个Board对象 的其他属性并没有显示出来,比如Description等等,您有什么好的方案?

第二个问题: 子类必须要[TypeConverter(typeof(ExpandableObjectConverter))]做修饰,要不然不显示,这里就有个问题,我只是做HOST这个宿主显示软件的,关于界面的描述,是由用户去编写的,能否把他去掉,这样方便用户写。因为我面对的用户是非C#,可能是开发内核 单片机的。 第三个问题,随着子类套子类,这个东西会一直往右边扩大,您有什么好的办法?

snikeguo commented 4 months ago

我网上找了个图 image

bodong1987 commented 4 months ago

有如下需求,

class Board
{
   public string Name{get.set};
   public ....//userData;
}
class ChoiceBoard
{
   public List<Board> AllBoards{get set}=new .... //假定集合里面已经有两个board ,一个叫stm32  一个叫S32K
   public Board SelectedBoard{get;set;}
}

class MainMenu
{
      [DisplayName("ChoiceBoard")]
      public  ChoiceBoard  ChoiceBoard{get;set;} 
}

我希望得到如下界面,会有类似于Enum一样的下拉选择框,由用户去选择是STM32还是S32K。 当然这个下选中不同的下拉框他的Description啥的都不一样。这样用户就直观的看到了。目前来说,我使用SelectableList+我自己的类实现toString()可以显示出来,不过做不到Description那些也显示出来。 可以讨论一下,我正在开发一个替换kconfig的一个开源软件。 image 这里我成功的显示出来了TC397 但是TC397这个Board对象 的其他属性并没有显示出来,比如Description等等,您有什么好的方案?

第二个问题: 子类必须要[TypeConverter(typeof(ExpandableObjectConverter))]做修饰,要不然不显示,这里就有个问题,我只是做HOST这个宿主显示软件的,关于界面的描述,是由用户去编写的,能否把他去掉,这样方便用户写。因为我面对的用户是非C#,可能是开发内核 单片机的。 第三个问题,随着子类套子类,这个东西会一直往右边扩大,您有什么好的办法?


你的前两个需求基本上都可以通过自定义ICellEditFactory来解决,这个你可以参考Extends切页中的内容来实现自己的特定数据的数据建模和展示方式。 [https://github.com/bodong1987/Avalonia.PropertyGrid?tab=readme-ov-file#extends]

第三个需求确实也没什么好的办法,因为这个控件我只是拿官方有的控件组合出来,并没有其他一些专门的定制。