我有一个组合框绑定到一个observable collection,这个集合会根据公司的选择而改变,很多公司只有一个账户(即items),所以我想知道如果ItemsSource中只有一个项目,使ComboBox设置SelectedItem的最佳方法,否则将其保留为null以确保用户选择一个账户。
目前我的做法是每次检查帐户集合是否只剩下一个,如果是,则将绑定的SelectedItem属性设置为该集合中的第一个项目。
这看起来比较繁琐,我需要在每个视图模型中单独实现它,并为每个组合框编写长达5行的代码。
以下是我目前的代码,但我想知道是否可以通过扩展ComboBox控件来实现此功能?如果有人有任何想法,请告诉我如何开始。
public CompanyGermanPower FromCompany
{
get { return _fromCompany; }
set
{
SetField(ref _fromCompany, value, () => FromCompany);
if(value!= null)
{
FromTradeAccountList = new ObservableCollection<TradeAccount>(TradeAccountAdapter.GetTradeAccounts(_session, value.ID));
if (Trade != null && FromTradeAccountList.Count == 1) Trade.TradeAccountFrom = FromTradeAccountList[0];
}
}
} private CompanyGermanPower _fromCompany;