2015-04-21 2 views
0

У меня есть два вида: один, в котором у меня есть список счетов, а второй, который имеет форму для добавления/редактирования счетов.WPF - ComboBox SelectedItem не является обязательным

BillView содержит некоторые текстовые поля и поле со списком. Проблема в том, что если я попытаюсь отредактировать счет, когда BillView откроет текстовые поля, вы перемещаете значения, введенные мной при добавлении счета, за исключением поля со списком, которое не показывает значение, которое я выбрал при добавлении счета (но привязка списка в порядке). Используется точка останова в наборе BillAccount, и кажется, что она работает, но выбранный comboxbox не установлен.

BillView (используется для добавления/редактирования счета):

<Label Grid.Row="5" HorizontalAlignment="Left" Content="Account" /> 
     <ComboBox Grid.Row="5" ItemsSource="{Binding Accounts}" DisplayMemberPath="TheAccount.AccountName" HorizontalAlignment="Right" 
        SelectedItem="{Binding BillAccount}"/> 

Это конструктор BillViewModel:

public BillViewModel(BillModel bill) 
    { 
     BillId = bill.TheBill.BillId; 
     AccountId = bill.TheBill.AccountId; 
     BillAmmount = (double)bill.TheBill.Ammount; 
     NextDate = bill.TheBill.NextDate; 
     this.accounts = GetAccounts(); // populates the list 
     billAccount = accounts.Where(i => i.TheAccount.AccountId == this.AccountId).First(); 
    } 


public AccountModel BillAccount 
    { 
     get { return billAccount; } 
     set { billAccount = value; 
     OnPropertyChanged("BillAccount"); 
     } 
    } 

В GetAccounts() Метод:

private ObservableCollection<AccountModel> GetAccounts() 
    { 
     if (accounts == null) 
      accounts = new ObservableCollection<AccountModel>(); 
     accounts.Clear(); 

     using(var context = new Ents()) 
     { 
      foreach(var account in context.Accounts) 
      { 
       accounts.Add(new AccountModel() { TheAccount = account }); 
      } 
     } 
     return accounts; 
    } 

Метод должен быть точным.

+0

Вы можете посмотреть на выходном окне, чтобы увидеть, если есть какие-либо вопросы, связывающие сообщенные? –

+0

Чтобы быть уверенным: 'Учетные записи' - это proprerty, который просто раскрывает поле' accounts'? – krimog

+0

Также вы используете DisplayMemberPath ... у вашего объекта AccountModel есть свойство «TheAccount»? И имеет ли этот объект свойство AccountName? –

ответ

1

банкнота счет переменной не свойство -

billAccount = accounts.Where(i => i.TheAccount.AccountId == this.AccountId).First(); 

изменение

BillAccount = accounts.Where(i => i.TheAccount.AccountId == this.AccountId).First(); 
+0

Я не уверен, что это проблема, так как BillAccount = accounts.Where (i => i.TheAccount.AccountId == this.AccountId) .First(); происходит в конструкторе, который будет выполнен до того, как привязка будет завершена для представления. –

+0

скважина изменение свойства не уволен, если вы не обновите свою собственность .. попробуйте это – Muds

+0

его не свойство в конструкторе ... использовать 'B' – Muds

Смежные вопросы