【问题标题】:Ways to identify which cell was clicked on WPF Grid?确定在 WPF Grid 上单击了哪个单元格的方法?
【发布时间】:2011-01-09 18:33:58
【问题描述】:

我有一个 3x3 矩阵网格。如果用户在特定单元格上,我如何在点击后识别单元格坐标?

请指教。谢谢 PJ

【问题讨论】:

    标签: c# wpf grid cell


    【解决方案1】:

    假设您正在设计井字游戏风格的游戏,并且所讨论的网格是标准的 WPF 网格,我想您最好在每个单独的单元格中放置一个控件。这样你就可以挂钩每个鼠标事件,如下所示:

    <Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid ShowGridLines="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
    
            <Button Grid.Column="0" Grid.Row="0" Click="ButtonClick" />
            <Button Grid.Column="1" Grid.Row="0" Click="ButtonClick" />
            <Button Grid.Column="2" Grid.Row="0" Click="ButtonClick" />
    
            <Button Grid.Column="0" Grid.Row="1" Click="ButtonClick" />
            <Button Grid.Column="1" Grid.Row="1" Click="ButtonClick" />
            <Button Grid.Column="2" Grid.Row="1" Click="ButtonClick" />
    
            <Button Grid.Column="0" Grid.Row="2" Click="ButtonClick" />
            <Button Grid.Column="1" Grid.Row="2" Click="ButtonClick" />
            <Button Grid.Column="2" Grid.Row="2" Click="ButtonClick" />
    
        </Grid>
    </Window>
    

    在你的代码隐藏中:

    private void ButtonClick(object sender, RoutedEventArgs e)
    {
        Button _btn = sender as Button;
    
        int _row = (int)_btn.GetValue(Grid.RowProperty);
        int _column = (int)_btn.GetValue(Grid.ColumnProperty);
        MessageBox.Show(string.Format("Button clicked at column {0}, row {1}", _column, _row));
    }
    

    【讨论】:

    • 如果您在每个单元格中都有一个 UIElement,则此方法有效,如果您没有,我想出了一个解决方案:stackoverflow.com/questions/6363312/…
    • 不错!我目前正在 WPF 中创建井字游戏……真的想避免有九个按钮处理程序,正在寻找这样的东西!非常感谢:-)
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2012-05-31
    • 2015-05-05
    • 1970-01-01
    相关资源
    最近更新 更多