2010-11-18 2 views
1

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

+0

У меня есть один и тот же вопрос, мой VM имеет свойство интерфейса, а Blend также не показывает свойства в окне привязки. – TDaver

+0

Можете ли вы показать пример класса? –

+0

@Michael S. Scherotter: 'public class PartialViewModel {public M Model {get; private set;}} ', а затем мой DataContext является' public class MyVM {public PartialViewModel Partial {get; private set;}} 'и, конечно,' public interface IDataInterface {string Stuff {get; set;}} 'И моя цель - увидеть свойство Partial.Model.Stuff в blend. Но Stuff не появляется, и, поскольку упомянутый оригинальный вопрос не получает также данных об образцах! – TDaver

ответ

2

Проблема заключается в том, что 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> 
+0

Я попробую! Благодаря! – TDaver

+0

Я пробовал, проблема в том, что я не хотел назначать Partial.Model для DataContext внутренней сетки, так как мне нужны как свойства Model, так и MyVM внутри, но временно заменяя интерфейс конкретным классом внутри MyVM работа (как предложил Йоханнес) – TDaver

+0

Хорошо, ваше решение не идеально, но я не задавал более мелкие детали, поэтому я все равно награжу награду. Еще раз спасибо. – TDaver

Смежные вопросы