Я создаю приложение Silverlight с использованием RIA Services. Я хочу реализовать мастер / детали поведения. Хитрость в том, что сетка «детали» не может быть заполнена напрямую с помощью свойства «SelectedItem» главной сетки, и мне нужно получить одно из полей из главной сетки и использовать его в качестве параметра для 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 мне нужно заполнить сетку деталей, но привязка, которую я использую, не работает:
<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.
Спасибо!