我有一个WPF页面(ZorgTrajectPage1.xaml),带有代码隐藏的ZorgTrajectPage1.xaml.cs,带有一个名为Ztc的DependencyProperty ZorgtrajectController。
dataContext在ZorgTrajectPage1.xaml的Page_Loaded()中设置:
Ztc = new ZorgTrajectController();
DataContext = Ztc;
看来我可以通过绑定访问这个ZorgTrajectController,在这个Controller中查找一个整数(patientID-variable):
<TextBox Name="textBox1" Text="{Binding Path=PatientID, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" />
这很完美。但我也有一个comboBox选择一个educatiePakket。进行此选择后,将通过LINQ查询查找selectedEducatiePakket并将其放入ZorgTrajectController中的变量中。这个SelectedEducatiePakket是一个LINQ类的新实例(它有一个带有它名字的String-property,叫做naam)。我使用以下方法填写它:
SelectedEducatiepakket = SelectedEducatiePakketByID(5);
public educatiepakket SelectedEducatiePakketByID(int id)
{
educatiepakket ep = (from o in db.educatiepakkets
where o.educatiepakket_id == id
select o).Single() as educatiepakket;
return ep;
}
以下内容:
<TextBox Name="EPNaamTxtbx" Text="{Binding Path=SelectedEducatiepakket.naam, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" />
不起作用。我完全不明白为什么这不起作用。我已经在Ztc的代码隐藏的Console.WriteLines信息中创建了一个按钮。它说有一个selectedEducatiePakket,但我的文本框没有显示任何信息。
有谁知道我做错了什么?
答案 0 :(得分:1)
我看到一个错字。您的绑定适用于SelectedEducatiepakket.naam
,但您说,该属性的名称为SelectedEducatiePakket
。差异:“p”&lt; - &gt; “Pak”中的“P”。
答案 1 :(得分:1)
确保ZorgTrajectController
实现INotifyPropertyChanged
并在PropertyChanged
属性的setter中触发SelectedEducatiePakket
事件。像这样:
public educatiepakket SelectedEducatiePakket
{
get { return _selectedEducatiePakket; }
set
{
_selectedEducatiePakket = value;
RaisePropertyChanged("SelectedEducatiePakket");
}
}
如果这没有用,请在调试器下运行项目,并在设置属性SelectedEducatiePakket
之后查看Visual Studio的“输出”窗口。可能有一些关于绑定错误的信息。