I'm working on a GUI application in WPF/MVVM. Let's say i have a Model class which is populated deserializing a (third-party) XML file
class Person
{
    public string Name { get; set; }
    public string Address { get; set; }
    public string ReservationId { get; set; }
}
and a ViewModel which exposes to its View a lot of properties and commands to manipulate the Model, in this case strings (such as ReservationId):
class StringManipulatorViewModel
{
    string modelString; //here's the problem
    public StringManipulatorViewModel(string modelString) 
    {
        this.modelString = modelString;
    }
    //Stuff to let the view manipulate the string
}
StringManipulatorViewModel is highly reusable and it is used by a lot of ViewModels, e.g.
class PersonViewModel
{
    Person model;
    public StringManipulatorViewModel ReservationManipulatorVM; //aggregated ViewModel
    public StringManipulatorViewModel AddressManipulatorVM; //aggregated ViewModel
    public PersonViewModel(Person model)
    {
        this.model = model;
        ReservationManipulatorVM = new StringManipulatorViewModel(model.ReservationId); //here's the problem
        AddressManipulatorVM = new StringManipulatorViewModel(model.Address); //here's the problem
    }
}
Obviously passing the string as "model" to the ViewModel isn't effective, and C# doesn't seem to allow string references as fields. What is the best/right way to let member ViewModels manipulate the Model when dealing with string types?
Thank you
 
     
    