Hi @Viorel ,
I have established the bindings in XAML. Both "Rate" and "Amount" columns are DataGridTemplateColumn.
<DataGrid Grid.Row="2" Name="dtGrdProduct" HorizontalAlignment="Right" AutoGenerateColumns="False" ItemsSource="{Binding Path= Product}" CanUserDeleteRows="False" Height="{Binding RelativeSource= {RelativeSource AncestorType= {x:Type UserControl}}, Path= ActualHeight, Converter={StaticResource HeightConverter}, ConverterParameter= '8'}" MinHeight="50" Margin="10,10,5,5" Width="500" HorizontalGridLinesBrush="LightGray" VerticalGridLinesBrush="LightGray" Loaded="DataGrid_Loaded" CellEditEnding="dtGrdProduct_CellEditEnding" PreviewKeyDown="DataGrid_PreviewKeyDown">
<DataGrid.RowValidationRules>
<local:DataRowValidation ValidationStep="UpdatedValue"></local:DataRowValidation>
</DataGrid.RowValidationRules>
<DataGrid.Columns>
<DataGridComboBoxColumn x:Name="cmbProduct" Header="Product ID" DisplayMemberPath="Name" SelectedValuePath="ID" SelectedValueBinding="{Binding Path= ProductID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></DataGridComboBoxColumn>
<DataGridTemplateColumn Header="@" HeaderStyle="{StaticResource HeaderContentRightAlign}" CellStyle="{StaticResource CellTextRightAlign}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path= Rate, StringFormat={}{0:n2}}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Path= Rate, StringFormat={}{0:n2}}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Setters>
<Setter Property="Visibility" Value="Collapsed"></Setter>
</Style.Setters>
<Style.Triggers>
<DataTrigger Binding="{Binding Path= ProductID}" Value="4">
<DataTrigger.Setters>
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger.Setters>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBox Grid.Row="1" Text="{Binding Path= Rate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:n2}}">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Setters>
<Setter Property="Visibility" Value="Visible"></Setter>
</Style.Setters>
<Style.Triggers>
<DataTrigger Binding="{Binding Path= ProductID}" Value="4">
<DataTrigger.Setters>
<Setter Property="Visibility" Value="Collapsed"></Setter>
</DataTrigger.Setters>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Path= ProductID, Converter={StaticResource productConverter} }"></DataGridTextColumn>
<DataGridTemplateColumn Header="Amount" HeaderStyle="{StaticResource HeaderContentRightAlign}" CellStyle="{StaticResource CellTextRightAlign}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Amount, StringFormat={}{0:n2}}">
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Path=Amount, StringFormat={}{0:n2}}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Setters>
<Setter Property="Visibility" Value="Visible"></Setter>
</Style.Setters>
<Style.Triggers>
<DataTrigger Binding="{Binding Path= ProductID}" Value="4">
<DataTrigger.Setters>
<Setter Property="Visibility" Value="Collapsed"></Setter>
</DataTrigger.Setters>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBox Grid.Row="1" Text="{Binding Path= Amount, Mode=TwoWay, StringFormat={}{0:n2}}">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Setters>
<Setter Property="Visibility" Value="Collapsed"></Setter>
</Style.Setters>
<Style.Triggers>
<DataTrigger Binding="{Binding Path= ProductID}" Value="4">
<DataTrigger.Setters>
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger.Setters>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Comments">
<DataGridTextColumn.Binding>
<Binding Path="Comments">
<Binding.ValidationRules>
<local:DataRowValidation ValidationStep="UpdatedValue"></local:DataRowValidation>
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
</DataGrid.Columns>
```</DataGrid>
Regards,
Daniel