我有一個實體框架,在客戶和聯繫人之間具有多對多關係。通過RIA域服務在xaml中進行數據綁定的問題
我已經生成了一個域服務類並手動添加了以下方法。
public Customer GetCustomerById(int Id)
{
return this.ObjectContext.Customer.Include("Contacts").SingleOrDefault(s => s.Id == Id);
}
我現在要創建一個頁面,顯示客戶的詳細信息以及與該客戶關聯的聯繫人列表。
我在customerdetails.xaml的代碼隱藏中讀取傳入頁面的Id參數。
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>
當我做這個文本框通過綁定得到很好的填充,但列表框保留爲空。
兩個問題:
我可以採用某種指定返回 類型GetCustomerById查詢, 所以我能看到的名字,當我 指定通過 性能GUI的約束力?
我在做什麼 這裏錯了嗎?爲什麼不是我的ListBox 填充?我是否正確地使用這種方法,還是需要在代碼隱藏中設置列表框的數據綁定?如果是這樣,怎麼樣?我還沒有找到如何以編程方式通過域數據源訪問聯繫人屬性。
我使用Silverlight和Entity Framework 4