wp_insert_post_data filter hook identify current action

Not sure, but seems maybe $data[‘post_status’] would be set to ‘trash’ at that point. If so, then you could just do something like…

if ($data['post_status'] == 'trash') { return $data; }

…before the other manipulations.

EDIT

That code should work then – but needs to be at top of the function, like…

public function updatetitle($data) {

    if ($data['post_status'] == 'trash') { return $data; }

    if($data['post_type'] != $property->post_name || !$_POST[${$this->active_class_var_name}->noncefield] ):
        return $data;
    endif;  

    if($_POST['address'] && $_POST[$property->noncefield]):
        $data['post_title']= ucfirst(sanitize_text_field($_POST['address'])).' '.
            ucfirst (sanitize_text_field($_POST['town'])).' '.
            ucfirst (sanitize_text_field($_POST['county']) );
    endif;

    return $data;
}

Your function in that case would simply return back the $data without making any other modifications to it.