Проблема с данными XAML Design для ItemsControl

Я пытаюсь освоить проектные данные для VS2010 (не Blend) в своем проекте MVVM.

У меня это работает для свойств виртуальной машины верхнего уровня, но есть проблема с коллекциями. Я использую DevForce для моделирования данных, поэтому в идеале мой XAML должен выглядеть так:

<MaintainTruckViewModel 
    xmlns="clr-namespace:IDATT.Module.Assets.Views"
    xmlns:data="clr-namespace:IDATT.Model;assembly=IDATT.Model.SL">
    <MaintainTruckViewModel.CurrentItem>
        <data:ASTTruck
            TruckId="1000"
            ExternalTruckId="T1000"
            IsActive="True"
            VinNumber="1ZAXBV"
            Make="Volvo"
            Model="ABC"
            MakeYear="2010"
            PlateNumber="ABC 123"
            PlateIssueAdministrativeArea="MO"
            Height="110"
            AxlesCount="3">
            <data:ASTTruck.ASTInsurances>
                <data:ASTInsurance
                    InsuranceKey="1"
                    CompanyName="MainCo"
                    AgentCompanyName="Joes insurance"
                    CoverageAmount = "1000000"
                    DeductibleAmount = "1000"
                    InsuranceType = "General liability"
                    IsActive = "True"
                    PolicyNumber = "123ABC"
                    ExpireOn = "01-01-2012"
                    Note = "This insurance covers all stuff"/>
            </data:ASTTruck.ASTInsurances>
        </data:ASTTruck>
    </MaintainTruckViewModel.CurrentItem>
</MaintainTruckViewModel> 

Мой xaml выглядит так, и я ожидаю увидеть данные ASTInsurance в представлении дизайна, но они не отображаются

<ItemsControl 
                    Grid.Row="1"
                    ItemsSource="{Binding CurrentItem.ASTInsurances}">

Я не знаю, как заставить различные списки «работать» с проектными данными. Любые указатели? Я где-то нашел, что могу использовать отдельный d:DesignData для списка и попытался создать такой XAML:

<Generic:List 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:Generic="clr-namespace:System.Collections.Generic;assembly=mscorlib"
    x:TypeArguments="data:ASTInsurance" 
    xmlns:data="clr-namespace:IDATT.Model;assembly=IDATT.Model.SL">
                <data:ASTInsurance
                    InsuranceKey="1"
                    CompanyName="Great West"
                    AgentCompanyName="Joes insurance"
                    CoverageAmount = "1000000"
                    DeductibleAmount = "1000"
                    InsuranceType = "General liability"
                    IsActive = "True"
                    PolicyNumber = "123ABC"
                    ExpireOn = "01-01-2012"
                    Note = "This insurance covers all stuff"/>

</Generic:List> 

Теперь редактор XAML подчеркивает Generic.List и говорит The type 'Generic:List' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built


person katit    schedule 03.01.2013    source источник


Ответы (1)


Проблема с попыткой использовать System.Collections.Generic.List<T> в XAML заключается в том, что (насколько мне известно) диалект Silverlight XAML не содержит способа указать значения для параметров универсального типа. Ошибка, которую вы получаете, связана с тем, что не существует типа System.Collections.Generic.List, у которого нет параметра типа.

Одна вещь, которую вы можете сделать, это создать подкласс List<T>, который предоставляет значение для параметра типа, но не содержит ни новых, ни переопределенных членов, например:

public class ASTInsuranceList : List<ASTInsurance>
{
}

Затем вы можете использовать объект ASTInsuranceList в XAML, чтобы содержать список объектов ASTInsurance.

person Luke Woodward    schedule 03.01.2013
comment
Бинго! Это сработало. Пришлось использовать источник коллекции, а затем добавить отдельные данные дизайна. - person katit; 08.01.2013