Настраиваемая подсказка Microsoft Silverlight DataGrid - PullRequest
1 голос
/ 11 марта 2010

У меня есть SL3 DataGrid, и мне нужна всплывающая подсказка для строк и разных столбцов, в которой есть данные, которые необходимо извлечь из базы данных, когда пользователь наводит курсор на всплывающую подсказку.

Я видел образцы вокруг это помогает использовать текущий контекст привязки или статический контент для всплывающей подсказки.

Но как я могу получить пользовательский контроль, показанный во всплывающей подсказке, которая идет и выбирает базу данных только тогда, когда пользователь вызывает всплывающую подсказку Кроме того, есть ли способ легко встроить это в MVVM вместо большого количества кода в коде позади?

1 Ответ

3 голосов
/ 11 марта 2010

Я не думаю, что всплывающие подсказки правильно используют привязку данных, или, по крайней мере, так, как Я считаю правильным. Если вы связываетесь со свойством ViewModel в объявлении всплывающей подсказки XAML, которое будет разрешено немедленно, это означает, что вызов будет сделан немедленно. Я полагаю, что вы могли бы добавить какое-либо присоединенное свойство или некоторую другую логику, чтобы перечислить событие открытия подсказки, а затем выполнить асинхронный вызов веб-службы.

С точки зрения MVVM, виртуальная машина, вероятно, не должна заботиться о том, почему что-то хочет получить данные, а просто требует ленивой загрузки. Таким образом, у вас может быть свойство на виртуальной машине (или, возможно, даже в объекте Model), которое предоставляет данные, но выполняет отложенную загрузку данных при первом вызове свойства. Когда асинхронный вызов возвращается, вы просто запускаете событие PropertyChanged на вашей виртуальной машине или M, которое должно быть связано с INotifyPropertyChanged. Тогда ваша привязка данных в представлении примет изменения. Ключом к запуску всего этого при появлении всплывающей подсказки является отсутствие привязки данных до тех пор, пока всплывающая подсказка не появится. Возможно, стоит потратить время на то, чтобы расширить всплывающую подсказку или сделать так, чтобы ваш собственный контейнер находился внутри всплывающей подсказки, выполняющей эту привязку к поздним данным.

...