0

I'm having some problems with left double click event on selected row of gridlistview. I setted XAML in this way:

<ui:DataGridListView Grid.Row="1" Margin="6" MinHeight="200"
                         Name="PTest"
                         ItemsSource="{Binding Source={StaticResource model}, Path=EsecuzioniCollection}"
                         SelectedItem="{Binding Source={StaticResource model}, Path=SelectedItem,Mode=TwoWay}"
                         VisibleItems="{Binding Source={StaticResource model}, Path=VisibleItems, Mode=OneWayToSource}">
        <ui:DataGridListView.InputBindings>
            <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding Source={StaticResource model},Path=MouseDoubleClickCommand}" 
             CommandParameter="{Binding ElementName=PTest,Path=SelectedItem}"       />
        </ui:DataGridListView.InputBindings>
        <ui:DataGridListView.Columns>
            <GridViewColumn Header="REQ" DisplayMemberBinding="{Binding NomeRichiesta}" />
            <GridViewColumn Header="DT_REQ" DisplayMemberBinding="{Binding DtRichiesta}" />
            <GridViewColumn Header="Process" Width="80" DisplayMemberBinding="{Binding Nome}" />
            <GridViewColumn Header="CodComp" DisplayMemberBinding="{Binding CodComp}" />
            <GridViewColumn Header="CodRamo" DisplayMemberBinding="{Binding CodRamo}" />
            <GridViewColumn Header="TC" DisplayMemberBinding="{Binding TipoCtr}" />
            <GridViewColumn Header="NC" DisplayMemberBinding="{Binding NumCtr}" />
            <GridViewColumn Header="PRODUCT" DisplayMemberBinding="{Binding CodProdoVend}" />
            <GridViewColumn Header="PRINT ID" DisplayMemberBinding="{Binding IdStampa}" />
            <GridViewColumn Header="POSITION KEY" DisplayMemberBinding="{Binding ChiavePosizione}" />
        </ui:DataGridListView.Columns>
    </ui:DataGridListView>

And my View model this ` public class FlussoTestCComunicazioniViewModel : ViewModelWithDb2Wrapper { public ICollectionView EsecuzioniCollection { get; set; }

    public List<PerimetriTestDataItem> righe_ptest = new List<PerimetriTestDataItem>();

    private PerimetriTestTemplate template = new PerimetriTestTemplate();

    public IDb2Data EsecuzioneSelected { get; set; }

    public static ICommand SearchCommand { get; set; }

    public static ICommand EnqueueCommand { get; set; }
    public static ICommand MouseDoubleClickCommand { get; set; }
    public PerimetriTestDataItem SelectedItem { get; set; }

    //private List<SuvStatesItem> _Rows = new List<SuvStatesItem>();

    private ulong _QueryLimit = 0;

    public ulong QueryLimit
    {
        get { return _QueryLimit; }
        set { SetPropertyValue<ulong>(ref _QueryLimit, value, "QueryLimit"); }
    }

    public FlussoTestCComunicazioniViewModel()
    {
        EsecuzioniCollection = CollectionViewSource.GetDefaultView(righe_ptest);
        this.ModelReady += Search;
    }

    public async void Search()
    {
        try
        {
            MainModel.ShowWait();

            await Connection.Open();

            if (QueryLimit > 0)
                template.Limit = QueryLimit;

            righe_ptest.Clear();

            await Task.Run(() =>
            {
                var task = template.ReadDataAsync<PerimetriTestDataItem>(Connection);
                task.Wait();
                righe_ptest.AddRange(task.Result);
            });

            //using (OracleWrapper oracle = new OracleWrapper(GestioneStampe.Ambienti.Ambiente.TF))
            //{

            //    _Rows.AddRange(await oracle.ReadAsync<SuvStatesItem>(SuvStatesItem.SuvOwnerStatesQuery, 125));
            //}
            EsecuzioniCollection.Refresh();
            MainModel.HideWait();

            MainModel.SendMessage("Trovate " + righe_ptest.Count + " esecuzioni", MessageBoxImage.Information);
        }
        catch (Exception)
        {
            MainModel.SendMessage("Qualcosa è andato storto nel recupero della lista delle esecuzioni",
                MessageBoxImage.Exclamation);
        }
        finally
        {
            Connection.Close();
        }
    }

    public async void MouseDoubleClick(PerimetriTestDataItem SelectedItem)
    { MainModel.ShowWait(); MainModel.HideWait(); MainModel.SendError("hi"); }

}

`When i double click a row on my datagridlistview: enter image description here

MouseDoubleClickCommand is not being fired

Can you please help me? I already saw different topics, but i didn't solved...

Salvocr
  • 1
  • 1
  • Does [this](https://stackoverflow.com/questions/4360998/gridview-doubleclick) answer your question? – aepot May 14 '20 at 23:47

1 Answers1

0

Solved using this:

 <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <i:InvokeCommandAction CommandParameter="{Binding Source={StaticResource model}, Path= PTest.DataContext}" Command="{Binding Source={StaticResource model}, Path=MouseDoubleClickCommand}">
                </i:InvokeCommandAction>
            </i:EventTrigger>
        </i:Interaction.Triggers>

Thank you. Salvo

Salvocr
  • 1
  • 1