ここでは、必要なことをする簡単なコードを示します。ワイヤーXAML
<Grid x:Name='gameboardGrid'>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Content="Button" Grid.Column="1" Click="AllButtons_Click"/>
<Button Content="Button" Grid.Column="0" Click="AllButtons_Click"/>
<Button Content="Button" Grid.Column="2" Grid.Row="1" Click="AllButtons_Click"/>
<Button Content="Button" Grid.Column="2" Click="AllButtons_Click"/>
</Grid>
で同じイベントハンドラにすべてのボタンが次にクリックハンドラでXを取得し、yはLayoutRoot要素に対する相対座標。
private void AllButtons_Click(object sender, System.Windows.RoutedEventArgs e) {
var b = sender as Button;
// in order to remain hit testable, hide the element
// by setting its Opacity property, not the Visibility property
// also note that semi transparent objects can affect performance
b.Opacity = b.Opacity >= 1.0 ? 0.0 : 1.0;
var locationPoint = b.TransformToVisual(LayoutRoot).Transform(new Point());
PageTitle.Text = String.Format("{0},{1}",locationPoint.X, locationPoint.Y) ;
}
EDIT
あなたはXAMLなしでそれをしたい場合。グリッドのXAMLを次に示します。
<Grid x:Name='gameboardGrid'>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
</Grid>
このコードを追加してボタンを生成します。
public MainPage() {
InitializeComponent();
for (int rowCounter = 0; rowCounter < 3; rowCounter++) {
for (int colCounter = 0; colCounter < 3; colCounter++) {
var codeButton = new Button();
Grid.SetRow(codeButton, rowCounter);
Grid.SetColumn(codeButton, colCounter);
codeButton.Click += new RoutedEventHandler(AllButtons_Click);
gameboardGrid.Children.Add(codeButton);
}
}
}
私はXAMLのアイデアを考えましたが、ユーザーの入力に基づいてボタンをオンザフライで生成しています。実行時に無名のボタンを何度もグリッドに追加できますか? –
はい、インスタンス化してグリッドに追加することができます。 –
コードにボタンを追加する方法を示すために私の答えを編集しました。 –