Набор инструментов DataForm для Silverlight 4, включая пустые элементы при просмотре коллекции - PullRequest
1 голос
/ 16 ноября 2010

У меня создана простая форма данных, которая считывает информацию об адресе.
Информация об адресе хранится в нескольких таблицах: Адрес, Город, Провинция, Страна.Чтобы упростить этот вопрос, я буду ссылаться только на адрес и город.Я получаю доступ к данным через контекст служб WCF RIA.Мой запрос в Службе:

public IQueryable<Address> GetAddresses()
    {
        return from Ad in ObjectContext.Addresses
               .Include("City")
               // .Include("City.Province")
               // .Include("City.Province.Country")
               where Ad.AddressID == 10
               select Ad;
    }

Чтобы помочь с отладкой, я ограничил набор результатов одним адресом (где Ad.AddressID == 10).В метаданные службы включена таблица городов:

        [Include]
        public City City { get; set; }

Шаблон только для чтения моей DataForm выглядит следующим образом:

      <dataFormToolkit:DataForm.ReadOnlyTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>

                <dataFormToolkit:DataField Label="Street Address" >
                    <TextBox Text="{Binding Path=StreetAddress, Mode=TwoWay}" />
                </dataFormToolkit:DataField>

                <dataFormToolkit:DataField Grid.Row="1" Label="City" >
                    <TextBox Text="{Binding Path=City.CityName, Mode=TwoWay}" />
                </dataFormToolkit:DataField>
            </Grid>
        </DataTemplate>
    </dataFormToolkit:DataForm.ReadOnlyTemplate>

Теперь, когда я отлаживаю свою DataForm, я ожидаю только1 адресная запись для отображения.Но на самом деле он возвращает 2 записи: ожидаемую запись адреса и связанную запись города.Первая отображаемая запись - это адрес, включая связанный город.Второе отображается пустым, но при взломе кода CurrentItem объекта DataForm показывает, что это запись City, связанная с первым адресом.

Как ограничить элементы в DataForm для отображения и просмотра толькоте из таблицы адресов?

1 Ответ

0 голосов
/ 16 ноября 2010

Оказывается, я загружал 'AllEntities' в своем коде позади.

dfAdd.ItemsSource = addressDataLoadResult.AllEntities;

Так что исправление состояло в том, чтобы изменить ItemsSource для загрузки только 'Entities'.Это ограничило мою коллекцию только адресными объектами.

...