8

DataGridバインディングを持たない WPF でプログラムによってデータ項目を追加するにはどうすればよいですか? にDataGridは 4 つの列があります。

4

3 に答える 3

18

あなたが何をしたいのか、あまり明確ではありません。私は、DataGrid を配置する場所を定義したと思います。説明のために、新しい WPF プロジェクトを作成し、最初の回答を投稿した chridram によって提供されたコードを使用します。

次の MainWindow.xaml では、Grid MainGrid に名前を付けて、コード ビハインドでアクセスします。

<Window x:Class="WpfExperiments.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid Name="MainGrid"/>
</Window>

DataItem クラスは WPF クラスではなく、自分で作成したカスタム クラスです。

public class DataItem
{
    public string Column1 { get; set; }
    public string Column2 { get; set; }
    public string Column3 { get; set; }
    public string Column4 { get; set; }
}

DataGrid が DataItem オブジェクトに格納されたデータをプログラムで表示できるようにするには、次の手順を実行します。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        // Your programmatically created DataGrid is attached to MainGrid here
        var dg = new DataGrid();
        this.MainGrid.Children.Add(dg);

        // create four columns here with same names as the DataItem's properties
        for (int i = 1; i <= 4; ++i)
        {
            var column = new DataGridTextColumn();
            column.Header = "Column" + i;
            column.Binding = new Binding("Column" + i);
            dg.Columns.Add(column);
        }

        // create and add two lines of fake data to be displayed, here
        dg.Items.Add(new DataItem { Column1 = "a.1", Column2 = "a.2", Column3 = "a.3", Column4 = "a.4" });
        dg.Items.Add(new DataItem { Column1 = "b.1", Column2 = "b.2", Column3 = "b.3", Column4 = "b.4" });
    }
}

これが役立つことを願っています。

こんにちはヨルグ

于 2012-08-14T11:32:56.380 に答える
2

これは、データベースからデータを取得するために使用する関数です string query = "Select * from VWpatientinfo"; DataTable dataTableObject = new DataTable("Table Name");

obj.DataRetrive(query,dataTableObject);
DataGridName.ItemsSource = dataTableObject.DefaultView;
于 2016-01-02T07:51:16.343 に答える