Я начал использовать ReactiveUI (с WPF) впервые и у меня возникла небольшая проблема, которую я не смог найти в Google или найти в документации. Как связать свойства из DependencyProperty элемента управления?
Я создаю пользовательский элемент управления
public partial class MotorControlView: ReactiveUserControl<MotorControlViewModel>
, а внутри класса у меня есть свойство зависимостей MotorAxis
public static readonly DependencyProperty MotorAxisProperty = DependencyProperty.Register(
"MotorAxis", typeof(MotorAxis), typeof(MotorControlView));
public MotorAxis MotorAxis
{
get => (MotorAxis) GetValue(MotorAxisProperty);
set => SetValue(MotorAxisProperty, value);
}
Внутри представление там TextBlock, которое должно показывать MotorAxis
(это перечисление) строковое значение (NoVal / X / Y / Z). Свойство установлено в MainWindow.XAML
(<uc:MotorControlView MotorAxis="Y" />
)
Проблема заключается в следующем:
- как связать текст метки со свойством элемента управления MotorAxis с помощью ReactiveUI ?
- как передать значение ViewModel
В конструкторе его значение всегда по умолчанию (NoVal), поэтому я думаю, что не могу передать его конструктору viewmodel ...
ViewModel будет отвечать за доступ к двигателю X / Y / Z на основе этого параметра
Единственное решение, которое я обнаружил, заключается в следующем:
//In View:
public MotorControlView()
{
InitializeComponent();
ViewModel = new MotorControlViewModel();
this.WhenActivated(dr =>
{
ViewModel.MotorAxis = this.MotorAxis;
});
this.Bind(ViewModel, vm => vm.MotorAxis, v => v.MotorAxisBlock.Text);
}
// В VM: свойство с this.RaiseAndSetIfChanged(ref this.motorAxis, value)
Есть ли более элегантный способ сделать это без установки значения вручную в WhenActivation? Так что я буду иметь это значение, например, в. Конструктор ВМ?