2012-05-16 51 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