在代码中识别ItemsControl中单击项的上下文

时间:2013-06-02 20:50:28

标签: wpf mvvm viewmodel

我有一些绑定到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风格)。

1 个答案:

答案 0 :(得分:0)

在ViewModel中,您可以使用以下代码段...

    var v = CollectionViewSource.GetDefaultView(MyCollection);
    var ci = v.CurrentItem;
    int p = v.CurrentPosition;

其中'MyCollection'是您绑定到ItemsControl的列表。变量'ci'将包含一个对象,可以向下转换为您需要的项目。变量'p'告诉索引'ci'在你的集合中的位置。

如果'MyCollection'继承自IList,您还可以访问其他好东西。

添加:在引用之前检查空值