2012-05-16 44 views
2

我有一個列表視圖與幾列和一個按鈕,加載一個新窗口輸入數據並提交數據到列表視圖。下面有一個截圖。 http://img16.imageshack.us/img16/2597/databinding.jpgWPF列表視圖數據綁定列表

我只想要一個項目添加到ListView添加按鈕被點擊

<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來說是全新的,我使用的「綁定」代碼只是來自網絡的小片段。我嘗試了幾種不同的方式來做這件事,現在我很困惑。

我有一個名爲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); 
    } 

此代碼列表視圖列表可能是一個有點亂現在我一直在試圖讓數據綁定工作。

回答

1

你要綁定到ListView到

{Binding Source currentStep} 

你需要讓currentStep公共財產

取出

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

如果您在按鈕新currentStep然後將所有項目會丟失,它只會有最後一個項目

對於數據cont分機

this.datacontext =此

+0

了變化之後出現一個錯誤在Visual Studio System.Windows.Data錯誤輸出窗口:40:BindingExpression路徑錯誤:源currentStep'屬性不是「對象中找到'''NewRecipe'(Name ='')'。 BindingExpression:Path = Source currentStep; DataItem ='NewRecipe'(Name ='');目標元素是'ListView'(Name ='StepsListView');目標屬性是'ItemsSource'(類型'IEnumerable') – user1335169

+0

NewRecipe是類的名稱?發佈currentStep的公共屬性。嘗試{Binding Path currentStep} – Paparazzi

+0

對不起NewRecipe是我輸入食譜信息的窗口的名稱。 – user1335169