У меня есть список со списком предметов из коллекции Observable. Он работает нормально, пока я не изменю окно, каждый раз, когда окно загружается, выпадающий список возвращается к первому элементу списка. Я бы хотел, чтобы в выпадающем списке оставался выбранный элемент даже после перезагрузки страницы (т. Е. Перейти в другое окно, а затем вернуться к первому).
Я попытался сохранить выбранный элемент и наложить его на выпадающий список напрасно, выпадающий список автоматически перезагружается.
public ObservableCollection<Order> AvailableOrderings { get; set; }
<local1:ComboBox ItemsSource="{local1:Binding AvailableOrderings}"
SelectedItem="{local1:Binding SelectedOrder, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="OrderName" HorizontalAlignment="Left" Margin="726.4,83,0,0"
VerticalAlignment="Top" Width="275" SelectedIndex="0" local1:Grid.Column="1"
IsSynchronizedWithCurrentItem="True" Height="22" local1:Grid.Row="1"/>
ViewModel:
public Order SelectedOrder
{
get
{
return _SelectedOrder;
}
set
{
if (_SelectedOrder != value)
{
_SelectedOrder = value;
_matrixProcessor.SetOrder(_SelectedOrder.OrderName);
OnPropertyChanged("SelectedOrder");
}
}
}
public ViewModelMain()
{
//.....//
AvailableOrderings = new ObservableCollection<Order>()
{
new Order(_matrixProcessor) { OrderName = "Row,Columns,Sheets" },
new Order(_matrixProcessor) { OrderName = "Columns,Row,Sheets" },
new Order(_matrixProcessor) { OrderName = "Sheets,Columns,Row" },
new Order(_matrixProcessor) { OrderName = "Columns,Sheets,Row" }
};
//_matrixProcessor.GetSelectedOrder() is a property which keeps the user selection
if(_matrixProcessor.GetSelectedOrder() !=null && _matrixProcessor.GetSelectedOrder() != AvailableOrderings.First())
SelectedOrder = _matrixProcessor.GetSelectedOrder();
}
Поле со списком начинается с первого значения списка каждый раз, когда загружается страница, я хотел бы, чтобы первый элемент отображался только при первой загрузке, а затем сохранял значение, выбранное пользователем.
Спасибо.