Silverlight 4工具包DataForm在浏览集合时包含空白项

时间:2010-11-15 21:11:26

标签: silverlight wcf-ria-services silverlight-toolkit

我创建了一个简单的数据表来读取地址信息 地址信息存储在多个表中:地址,城市,省,国家。为了简化这个问题,我只会提到地址和城市。 我正在通过WCF RIA Services上下文访问数据。我在服务中的查询是:

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条记录:预期的地址记录和链接的城市记录。显示的第一条记录是包含链接城市的地址。第二个显示为空白,但是当进入代码时,DataForm的CurrentItem显示它是链接到第一个地址的City记录。

如何限制DataForm中的项目以显示和浏览地址表中的项目?

1 个答案:

答案 0 :(得分:0)

事实证明我在我的代码中加载了'AllEntities'。

dfAdd.ItemsSource = addressDataLoadResult.AllEntities;

所以解决方法是将ItemsSource更改为仅加载'Entities'。这限制了我的集合仅限地址对象。