1

我有一些集合绑定到ItemsControl. DataTemplate 被定制以表示其元素。现在,我必须对与渲染的 DataTemplate 对应的数据(集合中的一个单元格)执行一些操作,结果是单击它。

WindowDataContext设置为包含我的集合的 ViewModel。

<DataTemplate x:Key="template"
              DataType="logic:Cell">
    <Ellipse .../>
</DataTemplate>

...

<ItemsControl ItemTemplate="{DynamicResource template}"
              ItemsSource="{Binding collection}">
   ...               
</ItemsControl>

我刚刚开始使用 WPF 的 MVVM 模式。我正在寻找处理此类问题的良好模式(以 MVVM 风格)。

4

1 回答 1

0

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

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

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

如果“MyCollection”从 IList 继承,您还可以访问其他好东西。

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

于 2013-06-02T21:35:48.387 回答