привязка основной детали с помощью wpf / linq к sql - PullRequest
1 голос
/ 11 декабря 2008

Я пытаюсь создать основной подробный вид отношения linq к sql в wpf. Вид будет иметь два комбинированных списка. Один для выбора основного элемента, а другой для выбора подробного элемента.

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

DataContext="{Binding Source={StaticResource ContactDataSet}, Path=Company}"

Мастер

<ComboBox Name="comboBox_CompanyName" 
          ItemsSource="{Binding}"
          DisplayMemberPath="Company"
          IsSynchronizedWithCurrentItem="True"
          />

Detail, Company2Contact является отношениями

<ComboBox Name="comboBox_ContactName" 
          ItemsSource="{Binding Path=Company2Contact}"
          DisplayMemberPath="Contact"                                  
          IsSynchronizedWithCurrentItem="True"                                  
          />

Я хочу добиться аналогичных результатов, используя linq to SQL. Если установить для wpf datacontext значение linqDataContext, я могу связываться с основными данными, но не могу связываться с отношением.

Я посмотрел на объект datacontext, и, похоже, он был правильно настроен. Каждый объект компании присутствует и содержит коллекцию объектов Contact.

Кто-нибудь знает, как привязать коллекцию объектов контактов, хранящихся в выбранном объекте компании?

Спасибо

1 Ответ

2 голосов
/ 11 декабря 2008

Если отложенная загрузка включена (по умолчанию), тогда ваши дочерние объекты извлекаются только тогда, когда они необходимы (что будет, когда вторая привязка к данным обращается к ним). Тем не менее, для отложенной загрузки для работы текст данных должен оставаться в живых. Если вы загружаете свои основные / подробные объекты, а просто запрашиваете текст данных для главного объекта, он фактически не извлекает подробности на этом этапе.

Другой вариант - использовать параметр LoadWith контекста данных. Вы должны указать, что при загрузке ваших главных объектов вам также необходимы детали.

Лично, что я делаю (и это, вероятно, очень спорно), но я, как правило, держать DataContext живой для жизни моего экрана. Это делает все намного проще, и на самом деле производительность не падает вообще. Я делаю это в моей ViewModel. Я держу ссылку на DataContext там.

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