我整个晚上都浪费了一些我认为非常简单的东西,但似乎WPF和谷歌让我完全失望。
我需要一个网格,其中6x6我用自定义控件填充每一行和每列。我希望能够通过键盘浏览此网格(我可以获得这些事件,没问题),但我似乎无法找到如何在窗口中心始终拥有所选的网格行/列。
我发现了一些类似旋转木马的实现,但是大多数只能在一个方向上工作,我想要双向导航,但似乎没有人支持这个,也不能扩展它们来做到这一点。
我基本上想要创建一个类似于PSP的网格导航。
答案 0 :(得分:1)
一种简单的方法是:
这是非常直接的实现,通过设置滚动偏移,可以通过一些数学计算如何将控件的x,y位置居中(这可能很棘手/混乱,但只要你了解用于滚动的坐标系,不是太糟糕)
或者,另一种避免通过Windows API滚动并使用自定义控件的方法:
第一种方法为您提供了大量基于Windows的免费处理(控件之间的标签,记住输入焦点的位置,以及将事件定向到每个“控件”的单独类)。第二种方法消除了所有这些“帮助”,但让你完全控制一切,这通常可以帮助避免意外的行为(例如,当用户按下Tab时它不会移动输入焦点,除非你专门编写代码使它做这一点)。