2

いくつかの列を持つリストビューと、新しいウィンドウをロードしてデータを入力し、データをリストビューに送信するボタンがあります。以下にスクリーンショットがあります。 http://img16.imageshack.us/img16/2597/databinding.jpg

追加ボタンがクリックされたときに、リストビューに1つのアイテムのみを追加しようとしています

<ListView x:Name="StepsListView" Height="100" ItemsSource="{Binding Source currentStep}">
       <ListView.View>
          <GridView>
            <GridViewColumn Header="Priority" Width="50" DisplayMemberBinding="{Binding Path=stepPriority}"></GridViewColumn>
            <GridViewColumn Header="Description" Width="185" DisplayMemberBinding="{Binding Path=stepDescription}"></GridViewColumn>
            <GridViewColumn Header="Time" Width="50" DisplayMemberBinding="{Binding Path=stepTime}"></GridViewColumn>
            <GridViewColumn Header="Dep" Width="50" DisplayMemberBinding="{Binding Path=stepDependency}"></GridViewColumn>
            <GridViewColumn Header="Type" Width="100" DisplayMemberBinding="{Binding Path=stepType}"></GridViewColumn>
          </GridView>
       </ListView.View>
</ListView>

これは私のxamlコードです。私は WPF に完全に慣れていないことに注意してください。私が使用している「バインディング」コードは、Web 上の小さなスニペットにすぎません。私はそれを行うためにいくつかの異なる方法を試しましたが、今はかなり混乱しています。

StepItem というデータ オブジェクトがあります。優先度はリストビューのアイテム番号である必要があるため、最初のアイテムが優先度 1 になります。

public class StepItem
{
    public string stepDescription { get; set; }
    public int stepTime { get; set; }
    public int stepDependency { get; set; }
    public int stepPriority { get; set; }
    public string stepType { get; set; }
}

ステップボタンのコードは以下です。currentStep はステップ項目のリストです

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        Methods start = new Methods();
        start.currentStep = new List<StepItem>();
        string dependency = dependencyTextBox.Text;
        string time = TimeTextbox.Text;
        string priority = priorityTextbox.Text;

        start.currentStep.Add(new StepItem()
        {
            stepDescription = DescriptionTextBox.Text,
            stepDependency = Convert.ToInt32(dependency),
            stepTime = Convert.ToInt32(time),
            stepType = typeTextBox.Text,
            stepPriority = Convert.ToInt32(priority)

        });

        NewRecipe n = new NewRecipe();
        n.addSteptoList(start.currentStep);
    }

そして、アイテムをリストビューに追加するためのコードが必要です。

    public void addSteptoList(List<StepItem> item)
    {
        StepsListView.Items.Add(item);
    }

このコードは、データバインディングを機能させようとしていじっていたので、おそらく少し混乱しています。

4

1 に答える 1

1

あなたはListViewにバインドしています

{Binding Source currentStep}

currentStep をパブリック プロパティにする必要があります。

を取り外します

public void addSteptoList(List<StepItem> item)
    {
        StepsListView.Items.Add(item);
    }

ボタンに currentStep を追加すると、すべてのアイテムが失われ、最後のアイテムのみが表示されます

データ コンテキストの場合

this.datacontext = これ

于 2012-05-16T12:23:25.140 に答える