У меня несколько раз возникал вопрос, но я так и не понял, как его правильно решить.
У меня есть объект SensorOrientation
, который состоит из числа с плавающей запятой и логического значения:
public class SensorOrientation{
public float? RadialAngle {
get{
//Getting from backingField
}
set{
//Setting the backingField
//Notifying
}
}
public bool IsAxial {
get{
//Getting from backingField
}
set{
//Setting the backingField
//Notifying
}
}
}
В моем ViewModel у меня есть одно свойство SensorOrientation
и еще одно свойство, которое является базовым ViewModel (у меня есть график с 9 позициями, и я должен выбрать тот, которыйсамое близкое к пользовательскому значению в RadialAngle).
Итак, я создал перечисление:
public enum OrientationEditorDirection
{
Unknown,
Center,
Top,
TopRight,
Right,
BottomRight,
Bottom,
BottomLeft,
Left,
TopLeft
}
Так что в моей ViewModel я хочу обновить это, когда значение "RadialAngle""или" IsAxial "был изменен:
public class ViewModel{
public SensorOrientation Orientation {
get{
//Getting from backingField
}
set{
//Setting the backingField
//Notifying
}
}
public OrientationEditorDirection Direction {
get=> CallToTheMethodThatComputeTheCorrectDirection();
set => CallToTheMethodThatUpdateTheSensorOrientationValue(value);
}
}
В xaml этой ViewModel у меня есть 2 разных подэлемента управления, один отображает направление, другой - настраиваемое поле, редактирующее точное значение?Orientation.RadialAngle
(когда парень нажимает на Center
(что равно Axial), пользовательское текстовое поле скрывается).
<local:OrientationEditor SelectedDirection="{Binding Direction}" />
<angleEditor:AngleEditor Angle="{Binding Orientation.Angle }"/>
Проблема в том, что мой AngleEditor
связан (идолжен быть связан, это используется в каком-то другом случае), на подсубсвойстве, я не вижу, когда я мог бы поднять свойство, измененное для Direction.
Лучшее, что я мог сделать какНа сегодняшний день в моей ViewModel, когда я устанавливаю новую «Ориентацию», я регистрируюсь на событие PropertyChanged
вручную, и когда что-то меняется, я обновляю Направление.Но я нахожу это довольно уродливым не очень WPFish.
Есть идеи, как мне это сделать лучше?