使用数据绑定从两个文本框中填充一个列表框
使用数据绑定从两个文本框中填充一个列表框
我有一个ListBox,我想通过点击按钮从两个TextBox中填充数据。我认为问题出在我在listbox中有不同的textblock。这是我想要的图片:
我的listbox的MainWindow.xaml:
ItemsSource="{Binding Issues}" Grid.Column="1" HorizontalAlignment="Left" Height="366" VerticalAlignment="Top" Width="453" Margin="0,0,-1,0"> DockPanel.Dock="Left" Margin="5,0,10,0"/> DockPanel.Dock="Left" Margin="5,0,5,0"/>
我的MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public sealed class ViewModel
{
public ObservableCollection
public ViewModel()
{
Issues = new ObservableCollection
}
}
private void addIssue_Click(object sender, RoutedEventArgs e)
{
var vm = new ViewModel();
vm.Issues.Add(new Issue { Name = "Jon Skeet", Comment = "lolilol" });
DataContext = vm;
InitializeComponent();
}
}
我的Issue.cs:
public sealed class Issue
{
public string Name { get; set; }
public string Comment { get; set; }
}
我按照这个教程进行操作,但我不想实现一个数据库:
我还尝试使用这个stackoverflow问题:
我遇到的错误是'System.InvalidOperationException' 'The Items collection must be empty to use ItemsSource',但不确定这是否是问题的核心。
问题的出现原因是在MainWindow类中的addIssue_Click方法中,尝试向ListBox控件中添加数据,但是数据没有成功添加。
解决方法是在MainWindow类的构造函数中,通过设置DataContext属性将ViewModel实例与MainWindow关联起来,并在addIssue_Click方法中调用ViewModel的Issues属性的Add方法,向其中添加新的Issue对象。
以下是解决问题的代码示例:
public partial class MainWindow : Window
{
ViewModel vm = new ViewModel();
public MainWindow()
{
InitializeComponent();
DataContext = vm;
}
public sealed class ViewModel
{
public ObservableCollection<Issue> Issues { get; private set; }
public ViewModel()
{
Issues = new ObservableCollection<Issue>();
}
}
private void addIssue_Click(object sender, RoutedEventArgs e)
{
vm.Issues.Add(new Issue { Name = "Jon Skeet", Comment = "lolilol" });
}
}
通过以上代码,可以实现将两个TextBox中的数据通过DataBinding绑定到ListBox控件中,并通过点击按钮将数据添加到ListBox中。