1

我需要创建一个 10*10 的静态矩阵(需要是数据网格),每个单元格中都包含按钮。
任何人都知道如何做到这一点?

谢谢你们。

圣诞节:

<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; }  
        }  
    }  
}  
4

2 回答 2

2

您可能不想将按钮数组绑定到数据网格。

相反,您应该构建一个命令数组,将 itemscontrol 的 itemssource 绑定到命令列表,并将这些命令数据模板化为绑定回命令的按钮。

于 2012-09-17T18:29:48.930 回答
0

正如您在评论中所说,您可以创建一个二维数组。但是,默认 WPFDataGrid不支持 2DItemsSource

例如,您可以使用DataGrid2D此处介绍的控件:

如何基于二维数组填充 WPF 网格

我个人使用它并且......它工作正常!

底部注释:不要创建数组Buttons以用作 ItemsSource。您应该执行以下操作,例如:

<DataGrid ItemsSource="{Binding MyList}">
  <DataGrid.ItemTemplate>
     <DataTemplate>
        <Button Content="{Binding}" />
     </DataTemplate>
  </DataGrid.ItemTemplate>
</DataGrid>

哪里MyListIList<string>

把它作为一个测试。然后你可以使用更复杂ItemsSource的,包括内容字符串+Command点击按钮时调用的。方式更清洁,符合 MVVM =)

于 2012-09-17T18:30:24.727 回答