【发布时间】:2012-09-17 18:17:52
【问题描述】:
我需要创建一个 10*10 的静态矩阵(需要是数据网格),每个单元格中都包含按钮。
任何人都知道如何做到这一点?
谢谢大家。
Xmal:
<Grid>
<DataGrid ItemsSource="{Binding Arr}">
<DataGrid.ItemTemplate>
<DataTemplate>
<Button />
</DataTemplate>
</DataGrid.ItemTemplate>
</DataGrid>
</Grid>
代码:
namespace WpfApplication4
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private List<string> m_Arr;
public MainWindow()
{
InitializeComponent();
DataContext = this;
m_Arr = new List<string>();
for (int i = 0; i < 10; i++)
{
m_Arr.Add(i.ToString());
}
}
public List<string> Arr
{
get { return m_Arr; }
set { m_Arr = value; }
}
}
}
【问题讨论】:
-
我试图在后面的代码中创建一个二维按钮数组,并将其绑定到数据网格,但它没有给我预期的结果,
-
我试图创建一个 List
- > 并将其绑定到一个数据网格,这给了我一个 int 矩阵,但我没有成功将它更改为按钮而不是 int...
-
结果的哪一部分出乎意料?不要使用矩阵标签 - 它用于数学矩阵和矩阵代数。
-
而不是按钮我得到 toString (system.window.controls.buttons)
-
您可能想要
ItemsControl而不是DataGrid,并将ItemTemplate定义为Button。我有一些examples on my blog 应该有助于解释这个过程。一个非常简单的方法是将ItemsPanelTemplate更改为10x10的UniformGrid,并将所有项目放在一个List<T>中,或者您可以使用List<List<T>>并使用两个嵌套的ItemsControls,一个ItemsPanelTemplate使用 Vertical StackPanel,另一个使用 Horizontal StackPanel