В моем представлении у меня есть ползунок и поле со списком .
Когда я меняю ползунок , я хочу, чтобы изменился комбинированный список.
Когда я изменяю поле со списком , я хочу, чтобы ползунок изменился.
Я могу обновить одно или другое, но если я пытаюсь обновить оба, я получаю StackOverflow error , поскольку одно свойство продолжает обновлять другое в бесконечном цикле.
Я пытался вставить Recalculate () , где обновление выполняется в одном месте, но все еще сталкиваюсь с проблемой рекурсии.
Как заставить каждый элемент управления обновлять другой, не переходя в рекурсию?
в представлении:
<ComboBox
ItemsSource="{Binding Customers}"
ItemTemplate="{StaticResource CustomerComboBoxTemplate}"
Margin="20"
HorizontalAlignment="Left"
SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/>
<Slider Minimum="0"
Maximum="{Binding HighestCustomerIndex, Mode=TwoWay}"
Value="{Binding SelectedCustomerIndex, Mode=TwoWay}"/>
в ViewModel:
#region ViewModelProperty: SelectedCustomer
private Customer _selectedCustomer;
public Customer SelectedCustomer
{
get
{
return _selectedCustomer;
}
set
{
_selectedCustomer = value;
OnPropertyChanged("SelectedCustomer");
SelectedCustomerIndex = _customers.IndexOf(_selectedCustomer);
}
}
#endregion
#region ViewModelProperty: SelectedCustomerIndex
private int _selectedCustomerIndex;
public int SelectedCustomerIndex
{
get
{
return _selectedCustomerIndex;
}
set
{
_selectedCustomerIndex = value;
OnPropertyChanged("SelectedCustomerIndex");
SelectedCustomer = _customers[_selectedCustomerIndex];
}
}
#endregion