I see absolutely no reason why implementing both INotifyPropertyChanged and INotifyDataErrorInfo on a parent class is bad design. Both interfaces deal with the view. These things are tightly coupled anyway. You gain nothing but pain of maintenance by separating them into different classes, especially if it means exposing private or protected state in a public context in order to achieve this separation.
Separation of Concerns that requires breaking Encapsulation ends up being a Scattering of Concerns, because any arbitrary code can change that private state.
Go with one base class that implements two interfaces.
Jumping from C# and the Windows Presentation Foundation framework, I've seen a number of code examples in Java where a data access object implements two different interfaces:
public interface BlogDataReader {
Blog find(int blogId);
}
public interface BlogDataWriter {
void create(Blog blog);
void update(Blog blog);
}
public interface BlogDataDeleter {
void remove(Blog blog);
}
public class BlogDataAccess implements BlogDataReader, BlogDataWriter, BlogDataDeleter {
public Blog find(int blogId) {
// ...
}
public void create(Blog blog) {
// ...
}
public void update(Blog blog) {
// ...
}
public void remove(Blog blog) {
// ...
}
}
A class, or base class, implementing multiple related interfaces is not an anti-pattern or bad design.