使用数据库记录在Button中填充TextBlock

时间:2016-02-08 20:37:31

标签: c# wpf

假设我的数据库表中有10行。我想在填充数据行的Button内创建10个TextBlockButton。我已经在其中创建了10个ButtonTextBlock,这里是代码

for (int i = 0; i < 10; i++)
 {
        Button Btn = new Button();
            Style style = this.FindResource("MetroNewButton") as Style;
            Btn.Style = style;
            Btn.Width = 250;
            Btn.Height = 80;
            Btn.Name = "BtnCA" + i;
            Btn.FlowDirection = FlowDirection.LeftToRight;
            Btn.HorizontalAlignment = HorizontalAlignment.Left;
            Btn.VerticalAlignment = VerticalAlignment.Top;

             for (int j = 0; j < 10; j++)
               {
                        Grid GridContent = new Grid();
                GridContent.Width = 250;
                GridContent.Height = 80;

                TextBlock txtBlock = new TextBlock();
                txtBlock.Name = "txtBlock" + j;
                txtBlock.TextWrapping = TextWrapping.Wrap;
                txtBlock.FontSize = 14;
                txtBlock.FontWeight = FontWeights.Bold;
                //txtBlock1.FlowDirection = FlowDirection.RightToLeft;
                txtBlock.Padding = new Thickness(10, 20, 0, 0);
                txtBlock.VerticalAlignment = VerticalAlignment.Top;
                Grid.SetRow(txtBlock, 0);
                 GridContent.Children.Add(txtBlock);
                Btn.Content = GridContent;
               } 
  }

好的,我有列表从数据库中携带数据。我想将数据分发到文本块,那么如何将数据放入文本块?

2 个答案:

答案 0 :(得分:0)

我认为,使用带有适当ItemTemplate的ItemsControl比创建for循环中的所有控件更好。只需创建一个表示数据的对象列表,将其绑定到ItemsCOntrol(ItemsSource = {Binding your_path}),并为网格设置正确的项模板。之后,将ItemsControl放在一个按钮内。如果我理解你,那应该可以解决你的问题。

答案 1 :(得分:0)

您可以使用forXAML创建按钮,而不是使用此MVVM binding循环。

<DataGrid ItemsSource="{Binding btnList}">
    <DataGrid.Columns>
      <DataGridTemplateColumn>
        <DataGridTemplateColumn.CellTemplate>
          <DataTemplate>
            <Button Content="{Binding  btn_NAME}"/>
          </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
    </DataGrid.Columns>
  </DataGrid>

然后从db获取内容并将其填入btnList

要了解MVVM binding,请仔细阅读thisthis