Ваш пользовательский объект, который вы показываете, должен иметь возможность уведомлять, что его значения меняются (т.е. реализует INotifyPropertyChanged).
Затем вы можете изменить свой PanelPreview для привязки к вашему объекту.
Таким образом, вы можете иметь столько экземпляров, сколько захотите - при изменении одного экземпляра INotifyPropertyChanged запустит отображение на всех остальных.
Например:
public class CustomClass : INotifyPropertyChanged
{
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
private void OnPropertyChanged(string propName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
private string mProp;
public string Prop
{
get
{
return mProp;
}
set
{
if (value != mProp)
{
mProp = value;
OnPropertyChanged("Prop");
}
}
}
}
И затем в своем месте привязки вы привязываетесь к нему. Здесь я привязываюсь к текстовым полям, но вы можете сделать это с чем угодно:
CustomClass c = new CustomClass();
textBox1.DataBindings.Add("Text", c, "Prop", true, DataSourceUpdateMode.OnPropertyChanged);
textBox2.DataBindings.Add("Text", c, "Prop", true, DataSourceUpdateMode.OnPropertyChanged);