0

それで、私はしばらくの間、私のようなケースを見つけようとしましたが、本当に役立つものを見つけることができませんでした.

私の問題は、割り当て名と割り当ての作成者を含む2つの列が必要なデータグリッドがあることです。以下に示すように、ヘッダーを含む列を既に作成しています。

   <DataGrid AutoGenerateColumns="False" Height="257" HorizontalAlignment="Left" 
   Margin="12,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="479">

        <DataGrid.Columns>
            <DataGridTextColumn Header="Assignments" />
            <DataGridTextColumn Header="Creator" />
        </DataGrid.Columns>
    </DataGrid>

さらに、テストとしてこのコードを並べてみました。最終的な解決策として、データベースから割り当てのリストを取得しますが、まだその時点ではありません。

    public MainWindow()
    {
        InitializeComponent();
        assignment1 = new Assignment();
        assignment2 = new Assignment();
        assignments = new List<Assignment>();
        assignment1.AddBasicInformation("Engelsk A", "Hans Rueløkke", "Han gik en tur",      0);
        assignment1.AddBasicInformation("Historie B", "Lis Hansen", "Hvad hed den første mand på månen? ___.", 0);
        assignments.Add(assignment1);
        assignments.Add(assignment2);
        for(int i = 0; i < assignments.Count; i++)
        {
           dataGrid1.Items.Add(assignments);
        }
    }

ご覧のとおり、割り当てには 3 つの文字列、整数、さらにいくつかのリストが含まれています。ただし、データグリッドに表示したい情報は最初の 2 つの文字列だけです。それを達成する方法を教えてくれる人はいますか?

私の割り当てクラスの重要な部分を編集すると、次のようになります

    public class Assignment
{
    private string name;
    private string creator;
    private string assignmentText;
    private int type;
    private List<Answer> answerlist;

    public void AddBasicInformation(string aname, string acreator, string aassignmentText, int atype)
    {
        name = aname;
        creator = acreator;
        assignmentText = aassignmentText;
        type = atype;
        answerlist = new List<Answer>();
    }

    public string GetName()
    {
        return name;
    }

    public string GetCreator()
    {
        return creator;
    }
4

1 に答える 1

1

コンストラクターで、for ループを次のように置き換えます。

dataGrid1.ItemsSource = assignments;

次に、XAML で、列のバインディングを宣言できます (Assignment クラスに Assignemnts および Creator という名前のプロパティがあると仮定します)。

<DataGridTextColumn Header="Assignments" Binding="{Binding Name} />
<DataGridTextColumn Header="Creator" Binding="{Binding Creator}" />

この例では、ItemsSource のバインディングはアンチパターンですが、これで作業を開始できます。

詳細については、WPF DataGrid クラスを参照してください。

編集:OPによる更新されたコードサンプルへの対応

WPF でのすべてのバインドは、プロパティで行う必要があります。フィールドの代わりにプロパティを使用するように割り当てクラスを更新します。

public class Assignment
{
    Public string Name {get; set;}
    Public string Creator {get; set;}
    Public string AssignmentText {get; set;}

    // ...
}
于 2012-04-09T23:05:33.033 に答える