Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何在listview的datatemplate中订阅事件_Wpf_Events_Xaml_Mvvm_Command - Fatal编程技术网

Wpf 如何在listview的datatemplate中订阅事件

Wpf 如何在listview的datatemplate中订阅事件,wpf,events,xaml,mvvm,command,Wpf,Events,Xaml,Mvvm,Command,在WPF中,我有一个绑定到ObservableCollection的listview XAML: 我做错了什么?我如何接收活动?顺便说一句:contextmenu的命令工作正常:) 更新我发现了错误-->我在错误的usercontrol中添加了事件。该死,我注意力不集中。很抱歉打扰大家。列表视图有一个双击鼠标事件。 这应该做到: <ListView MouseDoubleClick="DoubleClickOnIt"> <ListView.ItemTemplate>

在WPF中,我有一个绑定到ObservableCollection的listview

XAML:

我做错了什么?我如何接收活动?顺便说一句:contextmenu的命令工作正常:)


更新我发现了错误-->我在错误的usercontrol中添加了事件。该死,我注意力不集中。很抱歉打扰大家。

列表视图有一个双击鼠标事件。 这应该做到:

<ListView MouseDoubleClick="DoubleClickOnIt">
   <ListView.ItemTemplate>
      <DataTemplate>
         <TextBlock Text="{Binding Path=Name}" FontWeight="Bold">
            <TextBlock Text=" - " FontWeight="Normal"/>
            <TextBlock Text="{Binding Path=UpdateDatum}" FontWeight="Normal"/>
         </TextBlock>
      </DataTemplate>
   </ListView.ItemTemplate>

   <ListViewItem>
      dddd
   </ListViewItem>
   <ListViewItem>
      eeeee
   </ListViewItem>
</ListView>

列表视图
有一个双击鼠标事件。 这应该做到:

<ListView MouseDoubleClick="DoubleClickOnIt">
   <ListView.ItemTemplate>
      <DataTemplate>
         <TextBlock Text="{Binding Path=Name}" FontWeight="Bold">
            <TextBlock Text=" - " FontWeight="Normal"/>
            <TextBlock Text="{Binding Path=UpdateDatum}" FontWeight="Normal"/>
         </TextBlock>
      </DataTemplate>
   </ListView.ItemTemplate>

   <ListViewItem>
      dddd
   </ListViewItem>
   <ListViewItem>
      eeeee
   </ListViewItem>
</ListView>

您只需从blend sdk(System.Windows.Interactivity.dll)使用InvokeCommandAction即可


编辑: viewmodel应如下所示:

    public List<object> ListOfOldData{ get; set; }

    private DelegateCommand<object> _openCommand;//or RelayCommand

    public DelegateCommand<object> OpenCommand
    {
        get { return _openCommand?? (this._openCommand= new DelegateCommand<object>(this.Execute)); }
    }

    private void Execute(object obj)
    {
        //obj is your selectedItem
    }
公共列表ListOfOldData{get;set;}
私有DelegateCommand openCommand//或中继通信
公共DelegateCommand OpenCommand
{
获取{return _openCommand???(this._openCommand=new DelegateCommand(this.Execute));}
}
私有void执行(对象obj)
{
//obj是您的selectedItem
}

ps:dunno您的类型这就是为什么object

您只需使用blend sdk(System.Windows.Interactivity.dll)中的InvokeCommandAction


编辑: viewmodel应如下所示:

    public List<object> ListOfOldData{ get; set; }

    private DelegateCommand<object> _openCommand;//or RelayCommand

    public DelegateCommand<object> OpenCommand
    {
        get { return _openCommand?? (this._openCommand= new DelegateCommand<object>(this.Execute)); }
    }

    private void Execute(object obj)
    {
        //obj is your selectedItem
    }
公共列表ListOfOldData{get;set;}
私有DelegateCommand openCommand//或中继通信
公共DelegateCommand OpenCommand
{
获取{return _openCommand???(this._openCommand=new DelegateCommand(this.Execute));}
}
私有void执行(对象obj)
{
//obj是您的selectedItem
}

ps:不知道你的类型这就是为什么object对我不起作用的原因。我不知道为什么,但它从未在事件处理程序中运行。我不知道您有什么,我在这里编译和工作:)是否有可能因为我的listview在扩展器中而出现问题?我只是尝试将listview放在扩展器中,仍然可以正常工作。这对我不起作用。我不知道为什么,但它从未在事件处理程序中运行。我不知道您有什么,我在这里编译和工作:)是否有可能因为我的listview在扩展器中而出现问题?我只是尝试将listview放在扩展器中,仍然可以正常工作。但不适用于我:(该命令未被调用。可能的问题是什么?有什么想法吗?vs输出窗口中有任何绑定错误吗?如果没有,您应该发布viewmodel和view中的所有相关代码。哦-您还没有看到我的更新。我发现了我的错误,我使用了错误的UserControl。很抱歉,占用了您的时间!但不适用于我:(该命令未被调用。可能的问题是什么?有什么想法吗?vs输出窗口中有任何绑定错误吗?如果没有,您应该发布viewmodel和view中的所有相关代码。哦-您还没有看到我的更新。我发现了我的错误,我使用了错误的UserControl。很抱歉占用了您的时间!
    <ListView x:Name="lvw" ItemsSource="{Binding ListOfOldData}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <i:InvokeCommandAction  Command="{Binding Path=OpenCommand}" 
                                            CommandParameter="{Binding ElementName=lvw, Path=SelectedItem}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>

    </ListView>
    public List<object> ListOfOldData{ get; set; }

    private DelegateCommand<object> _openCommand;//or RelayCommand

    public DelegateCommand<object> OpenCommand
    {
        get { return _openCommand?? (this._openCommand= new DelegateCommand<object>(this.Execute)); }
    }

    private void Execute(object obj)
    {
        //obj is your selectedItem
    }