Blend не генерирует образцы данных для VM - PullRequest
1 голос
/ 18 ноября 2010

В Blend 4 я пытаюсь сгенерировать пример источника данных из моего класса VM.У класса есть свойство, которое возвращает наблюдаемую коллекцию интерфейса, и другое свойство с наблюдаемой коллекцией класса.При создании примера источника данных Blend создает данные для свойства класса, но не для интерфейса.Это можно обойти?Мой код абсолютно требует наличия интерфейса, но в то же время я хочу, чтобы я мог видеть пример данных, сгенерированных во время разработки.

1 Ответ

2 голосов
/ 05 апреля 2011

Проблема в том, что Blend не знает, какой тип объекта создать в качестве конкретной реализации IDataInterface. Я бы предложил создать два источника данных времени разработки, один для MyVM и один для конкретной реализации IDataInterface:

namespace SilverlightApplication1
{
    public interface IDataInterface 
    { 
        string Stuff { get; set; } 
    }

    public class PartialViewModel<M> 
    { 
        public M Model { get; private set; } 
    }

    public class ConcreteDataInterface : IDataInterface
    {
        public ConcreteDataInterface()
        {
            this.Stuff = "Concrete Stuff!";
        }

        public string Stuff {get;set;}
    }

    public class MyVM 
    { 
        public PartialViewModel<IDataInterface> Partial 
        { 
            get; 
            private set; 
        } 
    }
}

и тогда XAML будет:

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot"
        d:DataContext="{d:DesignData /SampleData/MyVMSampleData.xaml}">
      <Grid DataContext="{Binding Partial.Model}" 
            d:DataContext="{d:DesignData /SampleData/ConcreteDataInterfaceSampleData.xaml}">
          <TextBlock Text="{Binding Stuff}"/>
      </Grid>
    </Grid>
</UserControl>
...