Eymen Efe Altun
Eymen Efe Altun

Reputation: 45

How to use a parameter with EventToCommand in mvvmlight on WPF

I have the following datagird in my WPF and I can open a new CustomerOperationView from OperationView with EventTrigger as you see. However, I want to open CustomerOperationView with a parameter for the datagrid inside of it, and failed in every way I tried.

<DataGrid Grid.Column="1"
                  Grid.Row="1"
                  x:Name="dgwOperationMain"
                  HorizontalAlignment="Left"
                  VerticalAlignment="Top"
                  Margin="0,0,0,0"
                  Width="700"
                  Height="425"
                  IsReadOnly="True"
                  Loaded="dgwOperationMain_Loaded"
                  AutoGenerateColumns="False"
                  FontFamily="/Fonts/#Poppins"
                  ScrollViewer.CanContentScroll="False" 
                  MouseDoubleClick="dgwOperationMain_MouseDoubleClick">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseDoubleClick"
                                SourceObject="{Binding ElementName=dgwOperationMain}">
                    <cmd:EventToCommand Command="{Binding Path=CustomerOperationViewCommand}"
                                        CommandParameter="{Binding ElementName=dgwOperationMain,Path=SelectedValuePath}"
                                        CommandParameterValue="documentCode"
                                        PassEventArgsToCommand="True" />
                </i:EventTrigger>
            </i:Interaction.Triggers>

            <DataGrid.Columns>
                <DataGridTextColumn Header="DocumentCode"
                                    MinWidth="120"
                                    Binding="{Binding DocumentCode}" />
                <DataGridTextColumn Header="Operator"
                                    MinWidth="50"
                                    Binding="{Binding Operator}" />
                <DataGridTextColumn Header="StartDate"
                                    MinWidth="70"
                                    Binding="{Binding StartDate}" />
                <DataGridTextColumn Header="EndDate"
                                    MinWidth="70"
                                    Binding="{Binding EndDate}" />
                <DataGridTextColumn Header="Pax"
                                    MinWidth="20"
                                    Binding="{Binding Pax}" />
                <DataGridTextColumn Header="Room"
                                    MinWidth="20"
                                    Binding="{Binding Room}" />
                <DataGridTextColumn Header="Currency"
                                    MinWidth="30"
                                    Binding="{Binding Currency}" />
            </DataGrid.Columns>

        </DataGrid >

Here is the codebehind parameter part: (I want the documentCode as a parameter on the xaml)

 private void dgwOperationMain_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            try
            {
                //var dataGrid = sender as DataGrid;
                DataGridRow row = (DataGridRow)dgwOperationMain.ItemContainerGenerator.ContainerFromIndex(dgwOperationMain.SelectedIndex);
                var rowColumn = dgwOperationMain.Columns[0].GetCellContent(row).Parent as DataGridCell;
                string documentCode = rowColumn.ToString().Substring(38);
                _documentCode = documentCode;
                dgwCustomerOperation.ItemsSource = _customerOperationService.GetCustomerOperation(documentCode);
                ShowCustomer();

            }
            catch (Exception)
            {
                MessageBox.Show("Not Valid!");
            }
        }

I would appreciate for your suggestion.

Upvotes: 0

Views: 71

Answers (0)

Related Questions