代码之家  ›  专栏  ›  技术社区  ›  Amy

创建扫雷器UI控件?

  •  1
  • Amy  · 技术社区  · 15 年前

    我一直在忙着开发一个能解决扫雷难题的程序(除了我认为这很有趣之外,没有其他原因)。但是,当涉及到UI时,我非常不喜欢实例化超过一百个相同控件的想法,每个单元格一个。我应该创建一个自定义控件来处理它的所有绘图和输入本身吗?你们有什么建议?

    我用的是WPF,我是个新手。任何一个指针都会很棒。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Will    15 年前

    是的,自定义控件是个好主意。此外,在这种情况下,M-V-VM是必须的;它将大大降低应用程序的复杂性。

    我要一个统一的格子,用纽扣做方格。如果要添加“?”,则必须创建三态自定义按钮。中间状态。

    按钮的型号应该是

    public class MineSquare : INotifyPropertyChanged
    {
      // exploded, number, or nothing
      pubic ImageSource ButtonImage {get;private set;}
      // true, then goes to false when clicked
      public bool CanClick {get; private set;}
      // bound to the Command of the button
      public ICommand Click {get; private set;}
    }
    

    用代码而不是控件处理模型。把九个雷区放到你的视图模型上的一个可观察集合中,绑定到你的统一网格,你有一个3x3扫雷游戏。每个按钮处理自己的逻辑。您可以通过视图模型钩住模型,迭代所有的方块,并确定是否每个人都被点击过。

        2
  •  0
  •   MusiGenesis    15 年前

    我认为您应该创建一个单独的、由所有者绘制的控件。WPF很酷,但是WPF应用程序在窗体上的控件总数方面仍然有相同的限制,因此在扫雷器中为每个单元单独设置控件仍然是个问题。

    尽管扫雷机已经很累了,但我自己也很喜欢它。也许你可以通过把电池做成六边形而不是矩形来获得更多的乐趣,并且把地雷排列成能拼出脏字的形状。