Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf Grid.GetRow和Grid.GetColumn始终返回0_Wpf_Grid_Row - Fatal编程技术网

Wpf Grid.GetRow和Grid.GetColumn始终返回0

Wpf Grid.GetRow和Grid.GetColumn始终返回0,wpf,grid,row,Wpf,Grid,Row,我有一个10x10网格。在每个空间中,我都添加了一个标签,其中添加了一个mousedoubleclick事件处理程序。因此,当我双击标签时,它应该显示行和列编号,但这两个属性都只得到0 这是代码。。。(是的,我为每个标签设置了Grid.SetRow和Grid.SetColumn) 您可能需要使用而不是e.Source。选中的事件是一个路由事件,当它在树中路由时,它将更改e.Source。您确定所有内容都已正确连接吗?以下是我的作品: XAML: 当我单击其中一个标签时,消息框包含正确的行和列。它

我有一个10x10
网格
。在每个空间中,我都添加了一个标签,其中添加了一个mousedoubleclick事件处理程序。因此,当我双击标签时,它应该显示
编号,但这两个属性都只得到0

这是代码。。。(是的,我为每个标签设置了
Grid.SetRow
Grid.SetColumn


您可能需要使用而不是e.Source。选中的事件是一个路由事件,当它在树中路由时,它将更改
e.Source

您确定所有内容都已正确连接吗?以下是我的作品:

XAML:


当我单击其中一个标签时,
消息框
包含正确的行和列。

它是相同的。即使是常规事件,我还是在标签上看到了。我知道这个方法的名字选择得不太好。实际上是这样的。lbl.MouseDoubleClick+=新的鼠标按钮venthandler(网格选中);lbl是标签。我在从C#非静态类以编程方式添加控件时遇到了这个问题。
private void grid_Checked(object sender, MouseButtonEventArgs e)
{
    MessageBox.Show(Grid.GetRow(e.Source as UIElement).ToString());
}
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <Label Grid.Row="0" Grid.Column="0" MouseDown="Label_MouseDown">
        Label 0, 0
    </Label>
    <Label Grid.Row="0" Grid.Column="1" MouseDown="Label_MouseDown">
        Label 0, 1
    </Label>
    <Label Grid.Row="0" Grid.Column="2" MouseDown="Label_MouseDown">
        Label 0, 2
    </Label>
    <Label Grid.Row="1" Grid.Column="0" MouseDown="Label_MouseDown">
        Label 1, 0
    </Label>
    <Label Grid.Row="1" Grid.Column="1" MouseDown="Label_MouseDown">
        Label 1, 1
    </Label>
    <Label Grid.Row="1" Grid.Column="2" MouseDown="Label_MouseDown">
        Label 1, 2
    </Label>
    <Label Grid.Row="2" Grid.Column="0" MouseDown="Label_MouseDown">
        Label 2, 0
    </Label>
    <Label Grid.Row="2" Grid.Column="1" MouseDown="Label_MouseDown">
        Label 2, 1
    </Label>
    <Label Grid.Row="2" Grid.Column="2" MouseDown="Label_MouseDown">
        Label 2, 2
    </Label>
</Grid>
private void Label_MouseDown(object sender, MouseButtonEventArgs e)
{
    var label = e.Source as UIElement;
    var row = Grid.GetRow(label);
    var col = Grid.GetColumn(label);

    MessageBox.Show(string.Format("{0},{1}", row, col));
}