Combobox не сохраняет выбранный предмет после перезагрузки - PullRequest
0 голосов
/ 07 января 2019

У меня есть список со списком предметов из коллекции 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();
}

Поле со списком начинается с первого значения списка каждый раз, когда загружается страница, я хотел бы, чтобы первый элемент отображался только при первой загрузке, а затем сохранял значение, выбранное пользователем. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...