Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 扩展网格,或者可以调整另一个面板?_Wpf - Fatal编程技术网

Wpf 扩展网格,或者可以调整另一个面板?

Wpf 扩展网格,或者可以调整另一个面板?,wpf,Wpf,如果可能的话,我想就一些设计问题向大家集思广益。 我正在做一个英国IECC铁路信号箱的sim卡,为了好玩:D 下面是一个真实的例子: 这是80年代的技术,具有简单的图形 它本质上是一个固定大小的单元格网格,使用自定义位图字体 我的版本将使用WPF,以允许更多的灵活性,但仍然具有相同的基本外观,除了原始版本在一系列监视器上分页外,我的版本将是一个大的可滚动\可缩放网格。我还希望网格是无限的,(至少在编辑器中,sim部分不需要它)根据需要添加行\列 我的第一次尝试使用了网格和矩形,只是为了让我一开始

如果可能的话,我想就一些设计问题向大家集思广益。 我正在做一个英国IECC铁路信号箱的sim卡,为了好玩:D

下面是一个真实的例子: 这是80年代的技术,具有简单的图形

它本质上是一个固定大小的单元格网格,使用自定义位图字体

我的版本将使用WPF,以允许更多的灵活性,但仍然具有相同的基本外观,除了原始版本在一系列监视器上分页外,我的版本将是一个大的可滚动\可缩放网格。我还希望网格是无限的,(至少在编辑器中,sim部分不需要它)根据需要添加行\列

我的第一次尝试使用了网格和矩形,只是为了让我一开始就容易些。 矩形可能会被更改为更低的级别,这取决于它的性能

我遇到了一些问题,这些问题让我觉得我可以使用比网格更好的东西

在“编辑器”模式下,我应该能够通过使用上下文菜单或选择网格上的空单元格来添加新元素。 所有找到哪个单元格被选中的解决方案,似乎都涉及到在每个单元格中添加透明矩形,或者涉及命中测试的黑客攻击,以及在每个单元格中循环检查交叉点

因为我要处理的是可能有几千个细胞,这两种解决方案都不是 看起来真的很合适,让我想知道标准网格是否是最好的方法

我也希望能够拖放元素组

网格没有“单元”的概念。只有在该行\列中有内容时,我才能获取该行\列

每个单元格中只有一个可视内容


那么,有没有比标准网格更好的方法呢?创建一个自定义面板、扩展一个现有面板,还是有一个现有的免费第三方控件可能会有所帮助?我的大脑似乎无法把它想象成网格以外的任何东西:D

我不知道第三方面板,但我认为网格是你最好的选择

下面是我要做的:

  • 每个单元格都包含一个透明矩形的网格(即使有1000个单元格,这也不是问题,见下文)
  • 封装网格的面板(例如StackPanel,或任何最适合您的面板,只要您可以将IsVirtualization属性附加到它)
  • 然后我在这个面板上设置了
    virtualizengpanel.isvirtualization=true
    virtualizengpanel.VirtualizationMode=VirtualizationModes.Recycling
    ,以减轻应用程序的布局
瞧!我认为你不需要比这更多的东西,而且我非常确定,如果你不使用你提到的“黑客”,你就不能用比这更少的东西(尽管在这种情况下我不会称之为“黑客”)

注意:这假设您的网格将滚动(因为我认为“1000”个单元格不适合您的屏幕)。如果您想让网格完全显示在屏幕上,虚拟化基本上是无用的,您必须使用您详细介绍的任何一种方法