2

私は 10x10 を持っていGridます。そして、各スペースに、mousedoubleclick イベント ハンドラーを追加したラベルを追加しました。したがって、ラベルをダブルクリックするRowと、Column数値が表示されるはずですが、両方のプロパティで 0 しか取得できません。

これはコードです...(そして、はい、ラベルごとに設定Grid.SetRowしました)Grid.SetColumn

private void grid_Checked(object sender, MouseButtonEventArgs e)
{
    MessageBox.Show(Grid.GetRow(e.Source as UIElement).ToString());
}
4

2 に答える 2

3

すべてが正しく接続されていると確信していますか? 以下は私にとってはうまくいきます:

XAML:

<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>

C#:

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));
}

ラベルのMessageBox1 つをクリックすると、正しい行と列が含まれます。

于 2010-02-19T20:39:15.687 に答える
1

e.Sourceの代わりに e.OriginalSourceを使用する必要がある場合があります。ルーティング イベントであるチェックされたイベントはe.Source、ツリーを介してルーティングされるときに変化します。

于 2010-02-18T20:10:11.017 に答える