2

wpfアプリケーションのグリッドにテキストブロックを作成しました。クリックイベントを作成する方法を知っています。しかし、そのセルからプロパティを取得する方法がわかりません。Grid.RowとGrid.Columnが必要なプロパティ。これどうやってするの?

<Window x:Class="TicTacToe.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Tic-Tac-Toe" Height="356" Width="475">
    <Grid VerticalAlignment="Top" ShowGridLines="True" Height="313" Margin="10,10,2,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Grid.Column="0" Text="o" TextAlignment="Center" FontSize="72" FontFamily="Lucida Bright" FontWeight="Bold"></TextBlock>
        <TextBlock Grid.Row="0" Grid.Column="1" MouseLeftButtonDown="ChoosePosition" ></TextBlock>
        <TextBlock Grid.Row="0" Grid.Column="2" ></TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="0" ></TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="1" ></TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="2" ></TextBlock>
        <TextBlock Grid.Row="2" Grid.Column="0" ></TextBlock>
        <TextBlock Grid.Row="2" Grid.Column="1" ></TextBlock>
        <TextBlock Grid.Row="2" Grid.Column="2" ></TextBlock>

    </Grid>

</Window>

 private void ChoosePosition(object sender, MouseButtonEventArgs e)
        {
        }
4

3 に答える 3

5

Grid.RowとGrid.ColumnはGridクラスからアタッチされたプロパティであるため、次の構文を使用してそれらを取得できます。

int row = Grid.GetRow(myTextBox);
int column = Grid.GetColumn(myTextBox);

あなたの場合、Clickハンドラーでsender引数をキャストできるので、次のようになります。

var myTextBox = sender as TextBox;
if(myTextBox != null) {
   int row = Grid.GetRow(myTextBox);
   int column = Grid.GetColumn(myTextBox);
}
于 2012-12-02T07:03:12.713 に答える
0

senderパラメータを確認しましたか?これにより、テキストボックスオブジェクトへの参照が得られます。これは、実行しようとしていることによっては必要なすべてのオブジェクトである可能性があります。

于 2012-12-02T07:00:26.883 に答える
0

TextBoxをTextBlockに変更するだけです

于 2012-12-30T19:08:16.793 に答える