У меня есть главное окно WPF, в котором будет размещена группа пользовательских контролов.
Я хочу, чтобы у каждого UC была своя логика, поэтому я добавил виртуальную машину следующим образом:
Конструктор UC
public IfcUpdaterViewModel IfcUpdaterViewModel;
public IfcUpdaterView()
{
IfcUpdaterViewModel = new IfcUpdaterViewModel();
DataContext = IfcUpdaterViewModel;
InitializeComponent();
}
И я добавил DP ICommand, чтобы связать его в основной форме следующим образом:
Зависимость UC
public static readonly DependencyProperty UpdateCommandProperty =
DependencyProperty.Register("UpdateCommand", typeof(ICommand), typeof(IfcUpdaterView), new UIPropertyMetadata());
/// <summary>
/// Dependency to bind the update command
/// </summary>
public ICommand UpdateCommand
{
get => (ICommand) GetValue(UpdateCommandProperty);
set => SetValue(UpdateCommandProperty, value);
}
привязка устанавливается следующим образом:
MainForm
public void ToDocument()
{
_ifcUpdater = new IfcUpdaterView();
MainPresenter.Content = _ifcUpdater;
_ifcUpdater.SetBinding(IfcUpdaterView.UpdateCommandProperty, new Binding(nameof(MainDataContext.UpdateIfcFile))
{
Mode = BindingMode.OneWay,
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
});
}
Но при этом привязка команды не работает. но если я удаляю DataContext, то привязка работает нормально, но я теряю логику виртуальной машины.
Есть ли способ объединить оба?