Как определить положение кнопки относительно сетки, которая содержит набор кнопок - PullRequest
1 голос
/ 31 января 2012

Я новичок в использовании WPF.

Я написал код xaml, чтобы сделать игру в крестики-нолики.

У меня есть сетка с 3 х 3 ячейки. Я поместил кнопку внутри каждой ячейки сетки.

Я хочу распечатать положение кнопки относительно сетки (то есть номер строки и номер столбца), когда я нажимаю кнопку.

Это код xaml:

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test Window" Height="500" Width="500" BorderBrush="#FA0D0D0D">

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Button Name ="b1" Grid.Column=" 0" Grid.Row=" 0" Click="button_Click" />
    <Button Name ="b2" Grid.Column=" 0" Grid.Row=" 1" Click="button_Click" />
    <Button Name ="b3" Grid.Column=" 0" Grid.Row=" 2" Click="button_Click" />
    <Button Name ="b4" Grid.Column=" 1" Grid.Row=" 0" Click="button_Click" />
    <Button Name ="b5" Grid.Column=" 1" Grid.Row=" 1" Click="button_Click" />
    <Button Name ="b6" Grid.Column=" 1" Grid.Row=" 2" Click="button_Click" />
    <Button Name ="b7" Grid.Column=" 2" Grid.Row=" 0" Click="button_Click" />
    <Button Name ="b8" Grid.Column=" 2" Grid.Row=" 1" Click="button_Click" />
    <Button Name ="b9" Grid.Column=" 2" Grid.Row=" 2" Click="button_Click" />

</Grid>
</Window>

Это код C #:

namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    static int symbol;
    static int[][] game;
    public MainWindow()
    {
        InitializeComponent();
        symbol = 1;
        game = new int[3][];
        game[0] = new int[3];
        game[1] = new int[3];
        game[2] = new int[3];

    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        Button b = (Button)sender;
        if (symbol == 1)
        {
            b.Content = "x";
            symbol = 2;
        }
        else
        {
            b.Content = "o";
            symbol = 1;
        }
    }



}

}

Внутри метода button_Click я хочу напечатать номер строки и номер столбца сетки, в которой расположена эта кнопка. Как я могу получить эту информацию?

1 Ответ

3 голосов
/ 31 января 2012

Вы можете получить индекс строки и столбца с помощью следующих статических методов Grid:

int row = Grid.GetRow(b);
int column = Grid.GetColum(b);

Методы возвращают значения вложенных свойств Grid.Row и Grid.Column.

...