我有两个观点:一个是我有一个账单清单,另一个是有一个表格来添加/编辑账单。
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;
}
方法应该没问题。
答案 0 :(得分:1)
帐单帐户是变量而非属性 -
billAccount = accounts.Where(i => i.TheAccount.AccountId == this.AccountId).First();
更改为
BillAccount = accounts.Where(i => i.TheAccount.AccountId == this.AccountId).First();