WPF - ComboBox SelectedItem没有绑定

时间:2015-04-21 13:53:41

标签: c# wpf mvvm binding combobox

我有两个观点:一个是我有一个账单清单,另一个是有一个表格来添加/编辑账单。

BillView包含一些文本框和一个要填写的组合框。 问题是,如果我在BillView打开时尝试编辑帐单,文本框会替换我添加帐单时输入的值,除了组合框没有显示我在添加帐单时选择的值(但列表绑定没有问题)。在BillAccount集上使用断点,它似乎正常工作,但未设置comboxbox selecteditem。

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;
    }

方法应该没问题。

1 个答案:

答案 0 :(得分:1)

帐单帐户是变量而非属性 -

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

更改为

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