C#WPF简单的listviewitem事件绑定将不起作用

时间:2019-12-24 11:52:47

标签: c# wpf

我有一个非常简单的listview,其中itemsource绑定到集合。然后,我有一个委托命令(来自Prism),当我单击其中一项时,要调用该命令。不幸的是,itemsource中的绑定无法正常工作。当我直接在列表视图中设置Attachedcommandbehavior时,它将调用该方法。

也许有人可以帮忙。

<ListView ItemsSource="{Binding col}">
        <ListView.ItemContainerStyle>
            <Style>
                <Setter Property="c:CommandBehavior.Event" Value="PreviewMouseDown"/>
                <Setter Property="c:CommandBehavior.Command" Value="{Binding Command}"/>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>

 public ObservableCollection<string> col { get; set; }
    public ICommand Command => _Command = _Command ?? new DelegateCommand<object>(e => cmd(e));
    private ICommand _Command;

    public void cmd (object e)
    {
        MessageBox.Show("Clicked");
    }

    public ViewModelCustom()
    {
        col = new ObservableCollection<string>();
        col.Add("a");
        col.Add("b");
        col.Add("C");
    }

谢谢

1 个答案:

答案 0 :(得分:0)

一种方法是在ViewModel中创建属性并跟踪set方法而不是命令中的更改

public T SelectedItem
{
   get { return _selectedItem; }
   set 
   { 
       _selectedItem = value; 
       // User selected another element here, do what you want
   }
}