我想拿一个对象,让我们说这个对象:
public class BenchmarkList
{
public string ListName { get; set; }
public IList<Benchmark> Benchmarks { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并让该对象将其ListName显示为PropertiesGrid的"name"部分("Benchmark"将是好的),并且对于PropertyGrid的"value"部分,要有一个IList <> of Benchmarks的下拉列表:
这是Benchmark对象
public class Benchmark
{
public int ID {get; set;}
public string Name { get; set; }
public Type Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望下拉列表显示基准的Name属性,以便用户可以看到.这是一个视觉示例:

所以,基本上,我正在尝试将Benchmark对象的集合放入下拉列表中,并且这些对象应该将其Name属性显示为下拉列表中的值.
我已经阅读了有关使用PropertiesGrid的其他文章,包括THIS和THIS,但它们比我想做的更复杂.
我经常处理服务器端的东西,并且不通过WebForms或WinForms处理UI,所以这个PropertiesGrid真的带我去旅行......
我知道我的解决方案在于实现"ICustomTypeDescriptor",这将允许我告诉PropertiesGrid它应该显示哪些值,而不管我想要绑定到下拉列表中的对象的属性,但我是只是不确定如何或在何处实施它.
任何指针/帮助将非常感激.
谢谢,迈克
更新:
好的,所以我正在改变一些细节.我之前想过应该参与的对象,所以这是我的新方法.
我有一个名为Analytic的对象.这是应该绑定到PropertiesGrid的对象.现在,如果我公开一个枚举类型的属性,PropertiesGrid将为我处理下拉列表,这是非常好的.如果我公开一个属于自定义类型集合的属性,那么PropertiesGrid就不那么好......
以下是Analytic的代码,我想要绑定到PropertiesGrid的对象:
public class Analytic
{
public enum Period { Daily, Monthly, Quarterly, Yearly };
public Analytic()
{ …Run Code Online (Sandbox Code Playgroud) 更新:我使用线程在内核数量中分割循环(在我的情况下为8),完整的循环在1秒内完成.所以问题不在于,线程操作不会更快.为什么Parralel Extension在这种情况下会失败?
嘿大家.我想用Parrallel.Foreach转换我的ForEach.问题是,parralelisation对我来说几乎没有任何好处.
原版的:
foreach (Entities.Buchung buchung in buchungen) {
Int32 categoryID = manager.GetCategoryID(new Regelengine.Booking(buchung)); // Average 4ms
buchung.Category = categoryID.ToString();
}
Run Code Online (Sandbox Code Playgroud)
平行:
System.Threading.Tasks.Parallel.ForEach(buchungen, buchung => {
Int32 categoryID = manager.GetCategoryID(new Regelengine.Booking(buchung));
buchung.Category = categoryID.ToString();
});
Run Code Online (Sandbox Code Playgroud)
结果:
---------------------------
Stopwatched Results for 1550 entries in the List:
---------------------------
Parallel.Foreach 00:00:07.6599066
Average Foreach: 00:00:07.9791303
Run Code Online (Sandbox Code Playgroud)
也许问题是,循环中的实际动作如此之短?但没有人能告诉我,在英特尔I7上并行执行1550操作将无法节省时间.
我正在使用VS 2010 SDK SP1创建Visual Studio 2010扩展,该扩展将在代码编辑器中打开源代码文件.扩展名是一个ToolWindow,它停靠在解决方案资源管理器所在的位置.
该扩展使用WCF服务,它检索源代码文件并在TreeView中显示层次结构.当双击代码文件时,它应该将相关的源加载到代码编辑器窗口中,就像解决方案资源管理器一样.
我已经阅读了有关VS扩展和DTE自动化的一段时间了,并且几乎没有取得任何进展.似乎我可以毫无问题地访问已经打开或活动的WpfTextViews,但我不明白如何在IDE的文档区域中打开一个新的TextView.请记住,这些不是保存在磁盘上的实际源代码文件,而是从WCF服务检索并存储在内存中.
有人可以提供一个例子或者给我一些如何实现这个的指导吗?谢谢.
我正在解决问题.我有一个方法返回一个List<Object[]>.
object[]列表中的每个包含以下内容:
object[0]=Id;
object[1]=Name;
Run Code Online (Sandbox Code Playgroud)
现在,我正在寻找一种方法将此List绑定到自定义中的ListView,ItemTemplate如下所示:
<asp:Label runat="server" ID="lblId"
Text="Here want to do an Eval/Bind for object[0]"></asp:Label>
<asp:Label runat="server" ID="lblName"
Text="Here want to do an Eval/Bind for object[1]"></asp:Label>
Run Code Online (Sandbox Code Playgroud)
任何建议都将深表感谢.