我有一个列表视图,其中包含几个列和一个按钮,用于加载新窗口以输入数据并将数据提交到列表视图。下面有一个截图。 http://img16.imageshack.us/img16/2597/databinding.jpg
我只是在点击添加按钮时尝试将一个项目添加到列表视图
<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);
}
然后我需要一些代码将项目添加到listview,现在我已经
了 public void addSteptoList(List<StepItem> item)
{
StepsListView.Items.Add(item);
}
这段代码现在可能有点乱,因为我一直在试图让数据绑定工作。
答案 0 :(得分:1)
你正在将ListView绑定到
{Binding Source currentStep}
您需要将currentStep设为公共属性
删除
public void addSteptoList(List<StepItem> item)
{
StepsListView.Items.Add(item);
}
如果按钮中有新的currentStep,则所有项目都将丢失,并且只有最后一项
对于数据上下文
this.datacontext = this