我有一个组合框,其中列出了Observablecollection中的项目。在我更改窗口之前,它可以正常工作,每次加载窗口时,组合框都还原为列表的第一项。我希望组合框即使在重新加载页面后仍保持选中状态(即转到其他窗口,然后返回第一个窗口)。 我试图保存选择的项目,并将其强加到ut组合框上,但是该组合框会自动重新加载。
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();
}
组合框每次加载页面时都从列表的第一个值开始,我希望它仅在第一次加载时显示第一项,然后保留用户选择的值。 谢谢。