Не могу связать детскую коллекцию в серебряном свете - PullRequest
1 голос
/ 08 сентября 2010

У меня довольно простая настройка, которую я не могу заставить работать в silverlight.У меня есть заказ с коллекцией OrderPayments.Эти объекты являются частью модели Entity Framework и предоставляются через службы WCF RIA.Я могу прекрасно связываться с любым базовым свойством в классе Order, но я хотел связать со списком, чтобы показать OrderPayments.Вот XAML для ListBox.

<ListBox ItemsSource="{Binding Data.OrderPayments, ElementName=orderDataSource}"></ListBox>

В списке ничего не отображается, и для отображаемого заказа есть хотя бы один OrderPayment.orderDataSource - это DomainDataSource, который содержит Order.Странно, что я не получаю никаких ошибок связывания, и когда я связываюсь с 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 &amp; 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>

1 Ответ

1 голос
/ 09 сентября 2010

Службы RIA WCF по умолчанию не включают дочерние объекты. Мне нужно было поместить [Include ()] в свойство OrderPayments объекта Order. Теперь работает как шарм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...