我需要创建一个静态矩阵(需要是datagrid)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; }
}
}
}
答案 0 :(得分:2)
您可能不希望将数组按钮绑定到数据网格。
相反,您应该构建一个命令数组,将itemscontrol的itemssource绑定到命令列表,并将这些命令datatemplate为绑定回命令的按钮。
答案 1 :(得分:0)
您可以按照评论中的说明创建2D数组。但是,默认WPF DataGrid
不支持2D ItemsSource
例如,您可以使用此处介绍的DataGrid2D
控件:
How to populate a WPF grid based on a 2-dimensional array
我个人也在努力工作......工作正常!
底部注意:不要创建Buttons
数组以用作ItemsSource。您应该执行以下操作,例如:
<DataGrid ItemsSource="{Binding MyList}">
<DataGrid.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}" />
</DataTemplate>
</DataGrid.ItemTemplate>
</DataGrid>
其中MyList
是IList<string>
做它作为测试。然后,您可以使用更复杂的ItemsSource
,包括单击按钮时要调用的内容字符串+ Command
。更清洁,符合MVVM =)