Wpf 如何构建包含5列和10行的网格
我有一个5列10行的网格,每列的值应该是0-9,点击任意数字 以获取单击的单元格的值。什么是构建这个的最佳方式Wpf 如何构建包含5列和10行的网格,wpf,xaml,Wpf,Xaml,我有一个5列10行的网格,每列的值应该是0-9,点击任意数字 以获取单击的单元格的值。什么是构建这个的最佳方式 有很多方法可以做到这一点,如果不了解更多的需求,很难说哪种方法最好 一种方法是将鼠标单击侦听器附加到网格,并在处理程序中计算单击了哪个单元格 Grid grid = e.Source as Grid; Point clickedPoint = e.GetPosition(Grid.RowProperty); int rowClicked = (int)Math.Floor(clicke
有很多方法可以做到这一点,如果不了解更多的需求,很难说哪种方法最好 一种方法是将鼠标单击侦听器附加到网格,并在处理程序中计算单击了哪个单元格
Grid grid = e.Source as Grid;
Point clickedPoint = e.GetPosition(Grid.RowProperty);
int rowClicked = (int)Math.Floor(clickedPoint.Y / grid.RowDefinitions.Count);
这对性能有好处,因为只有一个事件侦听器——但您必须确保放置在网格顶部的任何元素都允许单击事件冒泡(也就是说,如果它们实现了单击侦听器,则应使用e.Handled=false
)
另一种方法是,如果网格单元格中有UI元素,则将单击侦听器附加到网格中的每个元素,并使用
clickedElement.GetValue(Grid.RowProperty)
获取行号
编辑您可以使用如下代码创建一个简单的5x10网格:
const int columns=5, rows=10;
for (int i = 0; i < columns; i++)
{
grid.ColumnDefinitions.Add(new ColumnDefinition());
for (int j = 0; j < rows; j++)
{
if (i==0) grid.RowDefinitions.Add(new RowDefinition());
var content = new TextBlock() { Text = j.ToString() };
Grid.SetColumn(content, i);
Grid.SetRow(content, j);
grid.Children.Add(content);
}
}
const int columns=5,rows=10;
对于(int i=0;i
有很多方法可以做到这一点,如果不了解更多的需求,很难说哪种方法最好
一种方法是将鼠标单击侦听器附加到网格,并在处理程序中计算单击了哪个单元格
Grid grid = e.Source as Grid;
Point clickedPoint = e.GetPosition(Grid.RowProperty);
int rowClicked = (int)Math.Floor(clickedPoint.Y / grid.RowDefinitions.Count);
这对性能有好处,因为只有一个事件侦听器——但您必须确保放置在网格顶部的任何元素都允许单击事件冒泡(也就是说,如果它们实现了单击侦听器,则应使用e.Handled=false
)
另一种方法是,如果网格单元格中有UI元素,则将单击侦听器附加到网格中的每个元素,并使用
clickedElement.GetValue(Grid.RowProperty)
获取行号
编辑您可以使用如下代码创建一个简单的5x10网格:
const int columns=5, rows=10;
for (int i = 0; i < columns; i++)
{
grid.ColumnDefinitions.Add(new ColumnDefinition());
for (int j = 0; j < rows; j++)
{
if (i==0) grid.RowDefinitions.Add(new RowDefinition());
var content = new TextBlock() { Text = j.ToString() };
Grid.SetColumn(content, i);
Grid.SetRow(content, j);
grid.Children.Add(content);
}
}
const int columns=5,rows=10;
对于(int i=0;i
每行代表什么?从(1,0)到(10,0)的每列中应该有0-9。每行代表什么?从(1,0)到(10,0)的每列中应该有0-9。我添加了图像网格应该是什么样子的,怎么做?@Gani抱歉,我现在看不到图像(它正在工作)。我以后必须看一看。@Kumar请查看我的更新。请注意,这个问题实在太笼统了,不适合堆栈溢出——通常情况下,问题应该是先尝试了一些东西,然后问一些具体的问题。我添加了图像网格应该是什么样子的,如何做到这一点?@Gani抱歉,我现在无法看到图像(它在工作时会阻止它)。我以后必须看一看。@Kumar请查看我的更新。请注意,这个问题实在太笼统了,不适合堆栈溢出——通常情况下,这些问题应该先尝试一些东西,然后再问一些具体的问题。