Blend не генерирует образцы данных для VM
В Blend 4 я пытаюсь сгенерировать пример источника данных из моего класса VM. У класса есть свойство, которое возвращает наблюдаемую коллекцию интерфейса, и другое свойство с наблюдаемой коллекцией класса. При создании примера источника данных Blend создает данные для свойства класса, но не для интерфейса. Это можно обойти? В моем коде абсолютно необходим интерфейс, но в то же время я хочу видеть пример данных, сгенерированных во время разработки.
1 ответ
Проблема в том, что 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>