使用数据绑定从两个文本框中填充一个列表框

31 浏览
0 Comments

使用数据绑定从两个文本框中填充一个列表框

我有一个ListBox,我想通过点击按钮从两个TextBox中填充数据。我认为问题出在我在listbox中有不同的textblock。这是我想要的图片:

TheUI

我的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 Issues { get; private set; }

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; }

}

我按照这个教程进行操作,但我不想实现一个数据库:

Tuto

我还尝试使用这个stackoverflow问题:

stackoverflow question

我遇到的错误是'System.InvalidOperationException' 'The Items collection must be empty to use ItemsSource',但不确定这是否是问题的核心。

0
0 Comments

问题的出现原因是在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中。

0
0 Comments

问题原因:将内容插入到ListBox标签中的Items集合中,导致该内容被视为Items集合的一部分。

解决方法:将该内容移到ListBox标签中的ItemTemplate标签之间。

0