使用按钮导航对象集合,并在面板中查看所选对象

这是我想要做的:我有一个List 。 现在我想在canvas(或任何其他容器)上显示该列表。 myCustomType每个属性(一些字符串,一个图像,一个字符串列表)都具有一个设计控件,即canvas。 基本上我想将canvas上的每个控件绑定到myCustomType上的一个属性。 然后我想在canvas上有一些按钮,允许我循环遍历List并同时更新所有控件,以便所有控件始终显示单个列表项的内容。

我一直在寻找,但找不到任何我可以用作起点的东西。

这容易实现吗? 或者我是否必须从头开始编写代码?

以下是使用MVVM的示例。

我的客户模型非常简单,如下所示:

 public class Customer { public string Name { get; set; } public int Age { get; set; } } 

接下来,我们需要一个ViewModel,应用程序的MainWindow将绑定到该ViewModel。 它拥有客户,并具有通过按钮在客户之间移动的方法。 CollectionView类型支持当前项跟踪,我想像WinForms的BindingSource:

 public class MyViewModel { public ICollectionView Customers { get; set; } public void MoveSelectionLeft() { Customers.MoveCurrentToPrevious(); } public void MoveSelectionRight() { Customers.MoveCurrentToNext(); } public MyViewModel() { Customers = new CollectionViewSource { Source = new[] { new Customer {Name = "John", Age = 25}, new Customer {Name = "Jane", Age = 27}, new Customer {Name = "Dawn", Age = 31} } }.View; } } 

接下来我们有了View。 我正在使用Caliburn Micro来简化对按钮的操作。 只需下载它并将Caliburn.Micro.dll的引用添加到您的项目:

                           

我们有一个ListBox绑定到MyViewModel的Customers属性,其Click事件已附加到MoveSelection方法的按钮,Customer字段绑定到Customers / property,这是Customers.CurrentItem的缩写。

假设这是WPF应用程序的MainWindow,我们接下来需要做的就是将其DataContext设置为MyViewModel。 这可以通过在代码隐藏中将其以下内容添加到其构造函数中来完成:

 public MainWindow() { this.DataContext = new MyViewModel(); InitializeComponent(); } 

现在应该设置所有内容,以便您可以构建和运行应用程序。 它看起来像这样:

截图

我不是WPF专家,但我认为如果没有在类后面的代码中进行编码,这是不可能的。 最简单的方法是创建一个属性,该属性保存当前列表项并绑定到控件。 使用事件处理程序或命令,如果使用MVVM,则可以将列表项设置为下一个或上一个。

对于绑定问题,我非常推荐使用wpf绑定备忘单: http : //www.nbdtech.com/Free/WpfBinding.pdf