【问题标题】:Can I decide the number of rectangles in a grid at runtime?我可以在运行时决定网格中矩形的数量吗?
【发布时间】:2014-11-11 11:55:05
【问题描述】:

我基本上拥有same problem as this guy。问题是,我希望屏幕上有一定数量的矩形,具体取决于屏幕大小/分辨率。现在对该问题的第一条评论说“不鼓励在基于 XAML 的技术中的过程代码中创建 UI 元素,这很麻烦,可能是个坏主意,而且完全是错误的”。

那么还有其他方法可以实现我的目标吗?

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

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

【问题讨论】:

    标签: c# user-interface grid windows-store-apps rectangles


    【解决方案1】:

    我理解 XAML 应用应在 XAML 中声明尽可能多的 UI 的普遍看法。但我也相信对事情过于教条是可能的。如果确实存在这样一种情况,即在设计时选择的 UI 元素的布局直到运行时才知道,那么为什么不在运行时根据该信息填充 UI?

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

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

    我继续发布了您所链接问题的答案。我不知道这是否真的是你需要的东西,但如果是这样,你可以看看那里。在我看来,here 的主要问题是“在运行时配置我的 UI 真的错了吗?”如您所见,我对此的回答是“不,不一定”。

    【讨论】:

    • 感谢您分享您的想法。您的解决方案完美运行。对于后人,如果你想适应矩形,你可以设置Horizo​​ntalAlignment和VerticalAlignment为Stretch,如果你想像我一样占用所有可用空间,或者手动设置Rectangle Width和Height。
    • -1。正如上面评论中的 OP 所述,他所需要的只是在 XAML 中设置几个属性。您正在谈论一个不符合 WPF 公认的、众所周知的最佳实践的解决方案。此外,由于您没有显示任何代码,因此您的帖子可能被视为无用的咆哮,而不是对 OP 问题的正确答案。
    • @HighCore:欢迎您提出意见。但是这里没有代码,因为它没有意义(就像 OP 中没有任何意义,包括他的问题中的代码)。而且您完全误解了 OP 的评论...设置这些属性并不能解决他的 question,这只是在 实际答案的上下文中格式化单个网格单元格的一种方式。在挥动反对票之前,您应该更仔细地阅读,尤其是当 OP 本人表示答案有用时。
    • @PeterDuniho 你应该先了解ItemsControl 是什么,然后再告诉人们他们需要 WPF 中的一堆可怕的程序代码来创建基于动态项目的 UI。
    • @HighCore:我相信表达方式是“忍住或闭嘴”。
    猜你喜欢
    • 1970-01-01
    • 2018-05-16
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多