У вас в корне неправильный подход.
Давайте по порядку.
Сначала почитайте про DataContext в WPF, потом про сам MVVM (тщательнее, чем до этого).
По структуре данных: одна таблица - это один тип аггрегации, соответственно другая таблица - другой тип аггрегации, поясню напримере:
есть таблица продукты (Id, Код продукта) и есть таблица заказчики (Id, Имя, Код заказанного продукта), для таблицы продукты, необходимо создать класс Product
class Product : INotifyPropertyChanged
{
public int Id {get;set;}
public int Code {get;set;}
// + реализация INPC
}
По INotifyPropertyChanged погуглите что это.
Затем для таблицы заказчики создать класс Consumer
class Consumer
{
public int Id {get;set;}
public string Name {get;set;}
public IEnumerable<Product> Orders {get;set;}
}
Данные выбираются из БД и для каждой таблицы должен создаваться экземпляр соответствующего ей класса.
Теперь по отображению и CRUD:
Создаете класс с контекстом
class MyShopViewModel : INotifyPropertyChanged
{
// Выбранный элемент, для которого будем отображать модальное окно
public object SelectedItem {get;set;}
}
Где то в коде, где открывается модальное окно, например в методе ShowObjectEditor делаете:
public void ShowObjectEditor()
{
// создаем окно с редактором объекта БД
var objectEditor = new ObjectEditorView();
// Устанавливаем ему DataContext, Где myShopViewModel - Объект класса MyShopViewModel
objectEditor.DataContext = myShopViewModel;
// показываем окно
objectEditor.Show();
}
В разметке ObjectEditorView
<Window>
<ContentPresenter Content="{Binding SelectedItem}"/>
</Window>
Но ContentPresenter не знает как его показывать, вот тут и открывается ответ на Ваш вопрос: для каждого типа данных пишете DataTemplate в ресурсах окна, у меня есть два типа - продукты и заказчики, и разметка приобретает вид
<Window>
<Window.Resources>
<ResourceDictionary>
<DataTemplate TargetType={x:Type Product}>
// вот тут и описываем чекбоксы и прочую хрен.
</DataTemplate>
<DataTemplate TargetType={x:Type Consumer}>
// вот тут и описываем чекбоксы и прочую хрен.
</DataTemplate>
<.ResourceDictionary>
<.Window.Resources>
<ContentPresenter Content="{Binding SelectedItem}"/>
</Window>
Теперь для каждого типа данных автоматом подтянется своя разметка и располагаться это будет в одном окне.
Что не понятно - спросите в комментариях.