Проблема связывания WPF с LINQ-классом - PullRequest
1 голос
/ 28 февраля 2011

У меня есть WPF-страница (ZorgTrajectPage1.xaml) с кодом ZorgTrajectPage1.xaml.cs с DependencyProperty ZorgtrajectController с именем Ztc.

dataContext устанавливается в Page_Loaded () ZorgTrajectPage1.xaml:

Ztc = new ZorgTrajectController();
DataContext = Ztc;

Похоже, что я могу получить доступ к этому ZorgTrajectController через привязку, чтобы найти целое число в этом контроллере (переменная PatientID):

<TextBox Name="textBox1" Text="{Binding Path=PatientID, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" />

Это прекрасно работает. Но у меня также есть поле со списком, который выбирает образовательный пакет. Когда этот выбор сделан, selectedEducatiePakket ищется с помощью LINQ-запроса и помещается в переменную в ZorgTrajectController. Этот SelectedEducatiePakket является новым экземпляром класса LINQ (который имеет свойство String со своим именем, называемым 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}" />

не работает. Я совершенно не понимаю, почему это не работает. Я сделал кнопку, которая в коде позади Console.WriteLines информации о Ztc. Он говорит, что есть выбранный EducatiePakket, но мое текстовое поле не показывает никакой информации о нем.

Кто-нибудь знает, что я делаю не так?

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Убедитесь, что ZorgTrajectController реализует INotifyPropertyChanged и запускает событие PropertyChanged в установщике свойства SelectedEducatiePakket.Примерно так:

public educatiepakket SelectedEducatiePakket 
{
   get { return _selectedEducatiePakket; }
   set 
   {
      _selectedEducatiePakket = value;
      RaisePropertyChanged("SelectedEducatiePakket");
   }
}

Если это не поможет, запустите ваш проект под отладчиком, и после того, как свойство SelectedEducatiePakket должно быть установлено, посмотрите в окне вывода Visual Studio.Может быть некоторая информация об ошибках привязки.

1 голос
/ 28 февраля 2011

Я вижу опечатку. Ваш Binding предназначен для SelectedEducatiepakket.naam, но вы сказали, что свойство называется SelectedEducatiePakket. Разница: "p" <-> "P" в "Pakket".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...