Создание элемента управления тральщика? - PullRequest
1 голос
/ 18 сентября 2009

Я был занят работой над программой, которая может решать головоломки Minesweeper (только по той причине, что я думаю, что это весело). Однако когда дело доходит до пользовательского интерфейса, мне очень не нравится идея создания более ста одного и того же элемента управления, по одному на ячейку. Должен ли я создать собственный элемент управления, который обрабатывает все его чертежи и вводит сам? Какой подход вы, ребята, предлагаете?

Я использую WPF, и я довольно новый. Любые указатели были бы великолепны.

Ответы [ 2 ]

2 голосов
/ 18 сентября 2009

Да, пользовательский элемент управления будет хорошей идеей. Кроме того, M-V-VM является обязательным в такой ситуации; это значительно снизит сложность вашего приложения.

Я бы взял UniformGrid и использовал кнопки в качестве квадратов. Вам нужно создать пользовательскую кнопку с тремя состояниями, если вы хотите добавить «?» промежуточное состояние.

Модель для кнопки будет выглядеть как

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;}
}

Вы имеете дело с моделью в коде, а не с элементами управления. Вставьте девять MineSquares в ObservableCollection на вашей ViewModel, привязанной к UniformGrid, и вы получите игру тральщика 3х3. Каждая кнопка обрабатывает свою логику. Вы можете подключиться к моделям через модель представления, чтобы перебрать все квадраты и определить, все ли нажали.

0 голосов
/ 18 сентября 2009

Я думаю, что вы должны создать один, нарисованный владельцем элемент управления. WPF - это круто, но приложение WPF по-прежнему имеет те же ограничения в отношении общего количества элементов управления в форме, поэтому наличие отдельного элемента управления для каждой ячейки в Minesweeper по-прежнему проблематично.

Сапер довольно разыгран, хотя мне самому это нравится. Может быть, вы могли бы получить больше удовольствия от этого, сделав ячейки шестиугольными вместо прямоугольных и расположив мины так, чтобы в них были написаны грязные слова или что-то в этом роде.

...