Reputation: 45
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