Hi Michael,
finally I solve it, thank you. Use of MultiDataTrigger in DataCell style was solution. Now it works as expected. Here is that style when somebody needs similar functionality:
<!--force readonly of cell when its data are not editable-->
<Style TargetType="{x:Type xcdg:DataCell}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource self}, Path=ParentColumn.FieldName}"
Value="ColumnB"/>
<Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type xcdg:DataRow},AncestorLevel=1},
Path=DataContext.ColumnB.IsReadOnly}"
Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="ReadOnly" Value="True" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource self}, Path=ParentColumn.FieldName}"
Value="ColumnC"/>
<Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type xcdg:DataRow},AncestorLevel=1},
Path=DataContext.ColumnC.IsReadOnly}"
Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="ReadOnly" Value="True" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource self}, Path=ParentColumn.FieldName}"
Value="ColumnD"/>
<Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type xcdg:DataRow},AncestorLevel=1},
Path=DataContext.ColumnD.IsReadOnly}"
Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="ReadOnly" Value="True" />
</MultiDataTrigger>
<!-- when cell belongs to editable column but is readOnly, change its backgoround to red-->
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=ReadOnly}" Value="True">
<Setter Property="Background" Value="#15FF0000" />
</DataTrigger>
</Style.Triggers>
</Style>