У меня есть поле со списком, которое я связываю с наблюдаемой коллекцией, которая изменяется (в зависимости от выбранной компании), и большое количество компаний будет иметь одну учетную запись (элементы), поэтому я хочу знать, каков наилучший способ сделайте так, чтобы ComboBox устанавливал SelectedItem, если в ItemsSource есть только 1 элемент, в противном случае оставьте его нулевым, чтобы гарантировать, что пользователь выберет учетную запись.
В настоящий момент я делаю это, проверяя коллекцию учетных записей каждый раз, когда она изменяется, и, если она содержит только одну, присваивая привязанному выбранному элементу свойства первый элемент в коллекции.
Это кажется запутанным, и мне нужно будет внедрить его в каждую модель представления отдельно и написать до 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;