If your view-model can expose a propery used to determine if it should be in edit mode, you can create a proper attached behaviour (through an attached property), to call BeginEdit().
public static readonly DependencyProperty IsInEditModeProperty = DependencyProperty.RegisterAttached("IsInEditMode",
new FrameworkPropertyMetadata(false, OnIsInEditModePropertyChanged));
private static void OnMyPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
Supposing that a change of a property will trigger the change to the VM property bound to the above attached property, you should get the required behaviour.
Another chance could be to create a custom behaviour using a TriggerBase-derived object. Such trigger could react to required property change events, invoking the BeginEdit directly.
The only thing I don't like about the second approach is that you are forced to put some VM logic into a trigger (which lives in the view domain). That's why I would go with the first option, since it keeps view and view-model nicely decoupled.