如何创建按钮矩阵

时间:2012-09-17 18:17:53

标签: c# wpf datagrid matrix

我需要创建一个静态矩阵(需要是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; }  
        }  
    }  
}  

2 个答案:

答案 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>

其中MyListIList<string>

做它作为测试。然后,您可以使用更复杂的ItemsSource,包括单击按钮时要调用的内容字符串+ Command。更清洁,符合MVVM =)