使用按钮导航对象集合,并在面板中查看所选对象
这是我想要做的:我有一个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