Я создаю приложение Silverlight, используя службы RIA. Я хочу реализовать поведение мастера/детали. Фокус в том, что сетка «детализация» не может быть заполнена непосредственно свойством «SelectedItem» главной сетки, и мне нужно сделать одно из полей из главной сетки и использовать ее как параметр для DataService. Как будет привязка?Silverlight Databind к параметризованной DataService
Это код параметризированном запроса:
public Usuarios GetUserFromId(int id)
{
return this.ObjectContext.Usuarios.Where(u => u.ID == id).First();
}
И эти источники на XAML:
<riaControls:DomainDataSource x:Name="DomainDataSourceRaceTrackGetUsersWithRole" AutoLoad="True" QueryName="GetUsersWithRoleQuery" LoadSize="20">
<riaControls:DomainDataSource.DomainContext>
<App:DomainServiceRaceTrack></App:DomainServiceRaceTrack>
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
<riaControls:DomainDataSource x:Name="DomainDataSourceRaceTrackGetUserById" AutoLoad="True" QueryName="GetUserFromId">
<riaControls:DomainDataSource.DomainContext>
<App:DomainServiceRaceTrack></App:DomainServiceRaceTrack>
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
Вот как я связываю мастер сетки:
<data:DataGrid x:Name="DataGridUsers" AutoGenerateColumns="False" ItemsSource="{Binding Data, ElementName=DomainDataSourceRaceTrackGetUsersWithRole}">
И затем на SelectedItemChanged мне нужно заполнить сетку Detail, но привязка, которую я использую, не работает:
<dataControls:DataForm x:Name="dataForm1" Height="393" Width="331"
VerticalAlignment="Top"
Header="User Details"
CurrentItem="{Binding DataGridUsers.SelectedItem.Id, ElementName=DomainDataSourceRaceTrackGetUserById}"
HorizontalAlignment="Left" >
<dataControls:DataForm.EditTemplate>
Кто-нибудь знает, что я делаю неправильно? Я бы хотел использовать XAML вместо codebehind.
Спасибо!
Я получаю сообщение об ошибке: QueryParameters не может быть изменен, когда AutLoad устанавливается Истина и CanLoad установлен в значение False. Есть идеи? Кроме того, при первом загрузке я получаю ошибку «Ошибка загрузки» для запроса «GetUserFromId». Последовательность не содержит элементов. Любые идеи? – brafales
Я думаю, что вы нарушаете ограничения в нашем выпуске PDC, что вызвало некоторые головные боли для людей. Мы блокировали нагрузки, когда существующая нагрузка находилась на рассмотрении, и это получалось очень часто. Это поведение будет исправлено в следующем выпуске, так что ожидающая загрузка будет отменена при вызове новой загрузки. В то же время вам может потребоваться отключить автоматическую загрузку для дочерних данных DomainDataSource, прослушать события SelectionChange в главной сетке, отменить любые ожидающие загрузки дочерних данных и вызвать новую нагрузку. –
Хорошо, я попробую. Спасибо за ответы! – brafales