고객과 연락처가 다 대다 관계 인 엔티티 프레임 워크가 있습니다.RIA 도메인 서비스를 통해 xaml에서 데이터 바인딩 문제가 발생했습니다.
도메인 서비스 클래스를 생성하고 다음 메소드를 수동으로 추가했습니다.
public Customer GetCustomerById(int Id)
{
return this.ObjectContext.Customer.Include("Contacts").SingleOrDefault(s => s.Id == Id);
}
이제 고객 세부 정보와 해당 고객과 관련된 연락처 목록을 보여주는 페이지를 만들고 싶습니다.
페이지로 전달되는 Id 매개 변수를 읽으려면 customerdetails.xaml의 코드 숨김에서 다음을 수행해야합니다.
public int CustomerId
{
get { return (int)this.GetValue(CustomerIdProperty); }
set { this.SetValue(CustomerIdProperty, value); }
}
public static DependencyProperty CustomerIdProperty = DependencyProperty.Register("CustomerId", typeof(int), typeof(CustomerDetails), new PropertyMetadata(0));
// Executes when the user navigates to this page.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (this.NavigationContext.QueryString.ContainsKey("Id"))
{
CustomerId = Convert.ToInt32(this.NavigationContext.QueryString["Id"]);
}
}
나는 페이지에 대해 다음 XAML을 사용 :이 작업을 수행 할 때
<Grid x:Name="LayoutRoot" DataContext="{Binding ElementName=customerByIdSource, Path=Data}">
<riaControls:DomainDataSource Name="customerByIdSource" AutoLoad="True" QueryName="GetCustomerById">
<riaControls:DomainDataSource.QueryParameters>
<riaControls:Parameter ParameterName="Id" Value="{Binding ElementName=CustomerDetailsPage, Path=CustomerId}" />
</riaControls:DomainDataSource.QueryParameters>
<riaControls:DomainDataSource.DomainContext>
<sprint:Customer2DomainContext/>
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
<StackPanel x:Name="CustomerInfo" Orientation="Vertical">
<StackPanel Orientation="Horizontal" Margin="3,3,3,3">
<TextBlock Text="Id"/>
<TextBox x:Name="idTextBox" Text="{Binding Id}" Width="160"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="3,3,3,3">
<TextBlock Text="Name"/>
<TextBox x:Name="nameTextBox" Text="{Binding Name}" Width="160"/>
</StackPanel>
<ListBox ItemsSource="{Binding Contact}" DisplayMemberPath="FullName" Height="100" />
</StackPanel>
</Grid>
는 텍스트 상자 멋지게 데이터 바인딩을 통해 채워하지만, 목록 상자는 비어 있습니다.
두 질문 : 나는이 (가) 등록 GUI를 통해 바인딩을 지정 때
내가 어떻게 든 GetCustomerById 쿼리의 반환 유형을 지정할 수 있습니다 은 그래서 이름을 볼 수 있습니까?
무엇을하고 있습니까? 여기에 잘못 되었나요? 내 ListBox 이 채워지지 않는 이유는 무엇입니까? 이 올바른 방법에 대한 건가요 또는 코드 숨김 목록 상자에 대한 데이터 바인딩을 설정해야합니까? 그렇다면 어떻게? 프로그래밍 방식으로 도메인 데이터 소스를 통해 연락처 속성에 액세스하는 방법을 찾지 못했습니다.
협회 속성
Contacts
가 생성되는 도메인 서비스 개체 유형에 포함되지 않습니다 :
은 내가 내 질문 2에 대한 답변을 발견 실버 엔티티 프레임 워크 4