与LINQ类的WPF绑定问题

时间:2011-02-28 10:37:51

标签: .net wpf linq binding

我有一个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,但我的文本框没有显示任何信息。

有谁知道我做错了什么?

2 个答案:

答案 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的“输出”窗口。可能有一些关于绑定错误的信息。