Сивлерлайт начало - PullRequest
       13

Сивлерлайт начало

0 голосов
/ 17 октября 2011

Я пытаюсь создать поле с колоннами и строками (например, шахматы или что-то в этом роде). Итак, для этого я использую Grid для начала и застрял: если я нажимаю MouseLeftButton на Rectangle в ячейке, это было ничто, но если я нажимаю на крошечный ряд или столбец, это было нормально.

для этого я использую Rectangle, который накладывается на сетку. все было в порядке, если свойство прямоугольника («Заполнить») не пусто. Но это тоже было проблемой: я не могу привязать данные к ячейкам: \

Итак, следующий шаг: я пытаюсь нарисовать прямоугольники и привязать к ним объекты, которые должны перехватывать события MouseLeftButton.

так:

public void Rectangle1_MouseLeftButtonDown(sender, e){

        Rectangle r = new Rectangle();
        UIElement s = sender as UIElement;
        r = (Rectangle)(e.OriginalSource);
        int Dx=11;
        int Dy=11;
        Brush pen = new SolidColorBrush(Colors.Orange);
        Thickness thick  = new Thickness();
        thick.Right = 0;
        thick.Bottom = 0;
        Rectangle[,] rex = new Rectangle[(int)Dx,(int)Dy];
        for(int i=0; i<Dx-1; ++i)
            for (int j = 0; j < Dy-1; ++j)
            { 

                int x = i*(int)r.Width/Dx + (int)r.Margin.Left;
                int y = j*(int)r.Height/Dy + (int)r.Margin.Top;
                thick.Left = x; thick.Top = y;
                rex[i,j].Width =(int)r.Width/Dx ;
                rex[i, j].Height = (int)r.Height / Dy;
                rex[i, j].Fill = pen;
                rex[i, j].HorizontalAlignment = HorizontalAlignment.Left;
                rex[i,j].VerticalAlignment = VerticalAlignment.Top;                                 
                rex[i,j].Margin = thick;       
                LayoutRoot.Children.Add(rex[i, j]);
            }
 }

где я не прав? (Большой прямоугольник нужно разделить на множество мелких, а также связывающих объектов)

Есть ли какой-нибудь простой способ сделать эту "шахматную доску"?

...