1

各セルにボタンを含む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; }  
        }  
    }  
}  
4

2 に答える 2

2

おそらく、ボタンの配列をデータグリッドにバインドしたくないでしょう。

代わりに、コマンドの配列を作成し、itemscontrol の itemssource をコマンドのリストにバインドし、それらのコマンドをコマンドにバインドされたボタンとしてデータ テンプレート化する必要があります。

于 2012-09-17T18:29:48.930 に答える
0

コメントで述べたように、2D 配列を作成できます。ただし、デフォルトの WPFDataGridは 2D をサポートしていません。ItemsSource

たとえば、DataGrid2Dここで紹介したコントロールを使用できます。

2 次元配列に基づいて WPF グリッドを設定する方法

私は個人的にそれで働いています...それはうまくいきます!

Buttons下部の注意: ItemsSource として使用する配列を作成しないでください。たとえば、次のようにする必要があります。

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

はどこMyListですかIList<string>

テストとして実行してください。ItemsSource次に、コンテンツ文字列 + を含む、より複雑な を使用Commandして、ボタンをクリックしたときに呼び出すことができます。よりクリーンで、MVVM に準拠 =)

于 2012-09-17T18:30:24.727 に答える