我有一個非常簡單的設置,我無法在silverlight中工作。我訂購了一系列OrderPayments。這些對象是實體框架模型的一部分,並通過WCF RIA Services公開。我可以很好地綁定到Order類的任何基本屬性,但我想綁定到一個列表框來顯示OrderPayments。這是ListBox的XAML。無法綁定silverlight中的子集合
<ListBox ItemsSource="{Binding Data.OrderPayments, ElementName=orderDataSource}"></ListBox>
從來沒有出現在列表框中,並且顯示的訂單至少有一個OrderPayment。 orderDataSource是包含訂單的DomainDataSource。關於這個奇怪的是,我沒有收到任何綁定錯誤,當我綁定到使用下面的代碼一個TextBlock:
<TextBlock Text="{Binding Data.OrderPayments, ElementName=orderDataSource}" />
文本「OrderPayment」被輸出到屏幕上。是否有什麼不同,我必須做,讓Silverlight真正拿起對象的引用?
整個以下XAML:
<riaControls:DomainDataSource AutoLoad="True" Name="orderDataSource" QueryName="GetOrder">
<riaControls:DomainDataSource.QueryParameters>
<riaControls:Parameter ParameterName="orderid" Value="1" />
</riaControls:DomainDataSource.QueryParameters>
<riaControls:DomainDataSource.DomainContext>
<ds:CEWCPSDomainContext />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
<StackPanel Orientation="Vertical" Margin="12">
<StackPanel Orientation="Horizontal">
<Button Width="100" Height="50" Content="Save & Return" Margin="0,0,12,12" />
<Button Width="100" Height="50" Content="Orders" Margin="0,0,12,12" />
<Button Width="100" Height="50" Content="Emails" Margin="0,0,12,12" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<dataForm:DataForm x:Name="dataForm1" Header="Order Contact Information"
AutoGenerateFields="False" AutoEdit="False" AutoCommit="False"
CurrentItem="{Binding Data, ElementName=orderDataSource}">
<dataForm:DataForm.EditTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel>
<dataForm:DataField Label="First Name">
<TextBox Text="{Binding FirstName, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }" />
</dataForm:DataField>
<dataForm:DataField Label="Last Name">
<TextBox Text="{Binding LastName, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<dataForm:DataField Label="Organization">
<TextBox Text="{Binding Organization, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<dataForm:DataField Label="Phone">
<TextBox Text="{Binding Phone, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<dataForm:DataField Label="Fax">
<TextBox Text="{Binding Fax, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<dataForm:DataField Label="Email">
<TextBox Text="{Binding Email, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<dataForm:DataField Label="Address 1">
<TextBox Text="{Binding Address1, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<dataForm:DataField Label="Address 2">
<TextBox Text="{Binding Address2, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<dataForm:DataField Label="City">
<TextBox Text="{Binding City, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<dataForm:DataField Label="State">
<TextBox Text="{Binding State, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<StackPanel Orientation="Horizontal" Width="Auto">
<dataForm:DataField Label="Zip code">
<TextBox Text="{Binding Zip, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
<dataForm:DataField>
<TextBox Text="{Binding Zip4, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
</StackPanel>
<dataForm:DataField Label="Country">
<TextBox Text="{Binding Country, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/>
</dataForm:DataField>
</StackPanel>
</StackPanel>
</DataTemplate>
</dataForm:DataForm.EditTemplate>
</dataForm:DataForm>
<StackPanel Orientation="Vertical">
<TextBlock FontWeight="Bold" FontSize="16" Text="Order Total/Payments" />
<TextBlock >
<Run Text="Order Total:" />
<Run Text="{Binding Data.OrderTotal, ElementName=orderDataSource}" />
</TextBlock>
<TextBlock Text="Payments" />
<TextBlock Text="{Binding Data.OrderPaymentItems, ElementName=orderDataSource}" />
<ListBox ItemsSource="{Binding Data.OrderPayments, ElementName=orderDataSource}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Amount}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</StackPanel>
</StackPanel>
什麼是觸發你的DomainDataSource的負載?您只綁定到DomainDataSource *上的某個點上的集合*。如果這是在代碼隱藏中完成的,請提供一些提示:) – 2010-09-08 15:39:29
這是XAML中的聲明。訂單加載正常,所有其他字段都顯示在表單上。只是這個子集合似乎並不真正包含項目,它似乎只有它所擁有的對象的名稱。 – Josh 2010-09-08 15:49:15
在這種情況下,你可以提供更多的XAML?綁定的問題在於,如果沒有匹配的綁定元素,它們將不顯示任何內容,因此如果列表爲空,則可能會像打印錯誤一樣簡單。 – 2010-09-08 15:54:28