Создание настраиваемого наложения сетки - PullRequest
0 голосов
/ 24 сентября 2010

Просто ищу какой-то вклад в то, к какому контролю я должен пойти, или в широком подходе. Я собираюсь загрузить PNG в программе, которую я пишу. Тогда я мог бы указать, что я хочу разделить 32x32 строки по всему изображению (я не разбиваю изображение, а просто определяю сетку сверху). Итак, очевидно, что мне нужно что-то, что я могу выбрать кратные из этих «ячеек» (которые разбили сетку или что-то еще) и легко определить, что выбирает пользователь. Делает ли это сетка или это что-то вроде создания руководящих принципов, а затем создания прямоугольников или чего-то такого?

1 Ответ

1 голос
/ 24 сентября 2010

Вы бы использовали ItemsControl или производный класс, такой как Selector со свойством ItemsPanel , установленным в Grid.В свойстве ItemsContainerStyle для стиля будет установлено значение ContentControl.ContentControl - это объект, который будет сгенерирован для каждого элемента в списке, с которым ваш ItemsControl будет связан с использованием свойства ItemsSource .В этом стиле вы настроите ControlTemplate для ContentControl на что-то, что включает Границу или Прямоугольник или аналогичный для получения линий сетки.Корневой элемент управления в вашем ControlTempalte будет иметь свойства Grid.Row и Grid.Column, связанные со свойствами .Row и .Column ваших элементов данных, которые будут DataContext.

.ItemsControl повторяет ObservableCollection этих DataItems.

<ItemsControl ItemsSource={Binding MyDataItems}  ....

Ваш DataItem будет выглядеть примерно так:

public class DataItem : INotifyPropertyChanged
{
     public int Row
     {
          get { // return field  }
          set { // raise the PropertyChanged event here  }
     }

     public int Column
     {
          get { // return field  }
          set { // raise the PropertyChanged event here  }
     }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...