Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
C# 我可以在运行时决定网格中矩形的数量吗?_C#_User Interface_Grid_Windows Store Apps_Rectangles - Fatal编程技术网

C# 我可以在运行时决定网格中矩形的数量吗?

C# 我可以在运行时决定网格中矩形的数量吗?,c#,user-interface,grid,windows-store-apps,rectangles,C#,User Interface,Grid,Windows Store Apps,Rectangles,我基本上是在享受这一切。问题是,我希望屏幕上有一定数量的矩形,这取决于屏幕大小/分辨率。现在,关于这个问题的第一条评论说,“在基于XAML的技术中,在过程代码中创建UI元素是不受鼓励的、繁琐的、可能是个坏主意,而且完全是错误的” 那么,有没有其他方法可以实现我的目标呢 我能想到的一种方法是至少有3x3个矩形,但为6x3添加UI代码,并使最后3行的可见性折叠。在应用程序加载中,我可以找出是否可以容纳更多行,并有选择地使它们可见。我还是想知道是否有更干净的方法 我不会在这里粘贴我的代码,因为它与链接

我基本上是在享受这一切。问题是,我希望屏幕上有一定数量的矩形,这取决于屏幕大小/分辨率。现在,关于这个问题的第一条评论说,“在基于XAML的技术中,在过程代码中创建UI元素是不受鼓励的、繁琐的、可能是个坏主意,而且完全是错误的”

那么,有没有其他方法可以实现我的目标呢

我能想到的一种方法是至少有3x3个矩形,但为6x3添加UI代码,并使最后3行的可见性折叠。在应用程序加载中,我可以找出是否可以容纳更多行,并有选择地使它们可见。我还是想知道是否有更干净的方法


我不会在这里粘贴我的代码,因为它与链接的问题非常相似,但如果有人问我,我会粘贴,这有助于澄清一些事情。

我理解一种普遍的看法,即XAML应用程序应该在XAML中声明尽可能多的UI。但我也相信对事情过于教条是有可能的。如果确实存在这样一种场景,即在设计时选择的UI元素的布局在运行时之前是未知的,那么为什么不在运行时基于该信息填充UI呢

除非有一些明确的、令人信服的论据详细说明为什么运行时创建UI元素实际上是不好的,否则我将在适当的时候继续这样做。我很乐意提前设计尽可能多的UI,但如果有部分依赖于仅在运行时已知的信息,我将编写代码来实现这一点

一个人试图将一个特定的设计目标转变成一些限制性的、规定性的教条,最终可能会遇到很多非常糟糕的代码和维护麻烦


我继续并发布了您链接到的问题的答案。我不知道这是否是你真正需要的东西,但如果是的话,你可以看看那里。在我看来,这里的主要问题是“在运行时配置我的UI真的那么错误吗?”我的答案是,正如您所看到的,“不,不一定”。谢谢您分享您的想法。你的解决方案非常有效。对于后代来说,如果你想适应矩形,如果你想像我一样占用所有可用空间,你可以将水平对齐和垂直对齐设置为拉伸,或者手动设置矩形的宽度和高度。-1。正如OP在上面的评论中所说的,他所需要的只是在XAML中设置几个属性。您所说的解决方案不符合WPF公认的、众所周知的最佳实践。此外,由于您没有显示任何代码,您的帖子可能被视为无用的咆哮,而不是对OP问题的正确回答。@HighCore:欢迎您发表意见。但是这里没有代码,因为它没有意义(就像在OP中没有在他的问题中包含代码一样)。你完全误解了OP的评论…设置这些属性并不能解决他的问题,它只是在实际答案的上下文中格式化单个网格单元的一种方法。在你挥舞下选票之前,你应该仔细阅读,尤其是当OP自己指出答案是有用的时候。@PeterDuniho在告诉人们他们需要WPF中的一堆可怕的过程代码来创建基于动态项的UI之前,你应该先了解一下
ItemsControl
是什么。@HighCore:我相信这个表达式是“提出或关闭”。