【问题标题】:WPF: Can a ListViewItem call method with its index as parameterWPF:可以将 ListViewItem 的索引作为参数调用方法吗
【发布时间】:2014-08-28 08:42:26
【问题描述】:

我在 xaml 中声明了一个ListBox,其中它的ItemsSource 绑定到一个ObservableCollection。在MVVM工作:

<ListBox ItemsSource="{Binding Arguments}">
    <ListBox.Resources>
        <DataTemplate DataType="{x:Type local:CArgumentClass}">
             <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding ArgName}" ToolTip="{Binding Documentation}"/>
                <TextBox Text="{Binding ValueToShow, TargetNullValue=Missing}"/>
             </StackPanel>
        </DataTemplate>
    </ListBox.Resources>
</ListBox>

我可以将命令附加到列表框事件。我正在使用Caliburn 框架,但还有很多其他方法可以做到这一点。我也可以向方法发送参数,在这个例子中我发送数据上下文:

<ListBox ItemsSource="{Binding Arguments}">
    <ListBox.Resources>
        <DataTemplate DataType="{x:Type local:CArgumentClass}">
             <StackPanel Orientation="Horizontal">
                <Button Style="{StaticResource DeleteButton}"
                        cal:Message.Attach="DeleteArgument($dataContext)]"/>
                <TextBlock Text="{Binding ArgName}" ToolTip="{Binding Documentation}"/>
                <TextBox Text="{Binding ValueToShow, TargetNullValue=Missing}"/>
             </StackPanel>
        </DataTemplate>
    </ListBox.Resources>
</ListBox>

我的问题是,我可以将项目索引发送到方法吗?怎么样?

请注意,此代码是针对问题编写的,我的目的是由用户以简单的方式从视图中删除列表中的项目。列表中的项目不可聚焦。

【问题讨论】:

  • 您可能会发送项目并从命令处理程序中的原始集合中获取索引。在 xaml 中它可能变得有点复杂

标签: c# wpf mvvm observablecollection caliburn


【解决方案1】:

pushpraj 注释为答案:让命令处理程序搜索索引。

【讨论】:

  • 确实是解决此问题的最简单方法之一。
猜你喜欢
  • 2013-10-19
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 2022-01-28
相关资源
最近更新 更多