我有一些绑定到ItemsControl
的集合。 DataTemplate经过自定义以表示其元素。现在我必须对数据执行一些操作(一个Cell来自集合),对应于渲染的DataTemplate,单击它的结果。
Window DataContext
设置为包含我的集合的ViewModel。
<DataTemplate x:Key="template"
DataType="logic:Cell">
<Ellipse .../>
</DataTemplate>
...
<ItemsControl ItemTemplate="{DynamicResource template}"
ItemsSource="{Binding collection}">
...
</ItemsControl>
我刚开始使用WPF的MVVM模式。我正在寻找处理这种问题的好模式(MVVM风格)。
答案 0 :(得分:0)
在ViewModel中,您可以使用以下代码段...
var v = CollectionViewSource.GetDefaultView(MyCollection);
var ci = v.CurrentItem;
int p = v.CurrentPosition;
其中'MyCollection'是您绑定到ItemsControl的列表。变量'ci'将包含一个对象,可以向下转换为您需要的项目。变量'p'告诉索引'ci'在你的集合中的位置。
如果'MyCollection'继承自IList,您还可以访问其他好东西。
添加:在引用之前检查空值