2012-06-10 11 views

Odpowiedz

21

Wystarczająco proste.

stworzyć model takiego:

public class Fruit 
{ 
    public string Name { get; set; } 
} 

Tworzenie ViewModel bazowe tak:

public class BaseViewModel 
{ 
    public ObservableCollection<Fruit> Fruits { get; set; } 
} 

stworzyć prawdziwe ViewModel tak:

public class RealViewModel : BaseViewModel 
{ 
    public RealViewModel() 
    { 
     if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled) 
      LoadData(); 
    } 

    public void LoadData() 
    { 
     // TODO: load from service 
    } 
} 

Tworzenie fałszywego-dane ViewModel like this:

public class FakeViewModel : BaseViewModel 
{ 
    public FakeViewModel() 
    { 
     this.Fruits = new ObservableCollection<Fruit> 
     { 
      new Fruit{ Name = "Blueberry"}, 
      new Fruit{ Name = "Apple"}, 
      new Fruit{ Name = "Banana"}, 
      new Fruit{ Name = "Orange"}, 
      new Fruit{ Name = "Strawberry"}, 
      new Fruit{ Name = "Mango"}, 
      new Fruit{ Name = "Kiwi"}, 
      new Fruit{ Name = "Rasberry"}, 
      new Fruit{ Name = "Blueberry"}, 
     }; 
    } 
} 

Czy to w XAML:

<Page.DataContext> 
    <local:RealViewModel /> 
</Page.DataContext> 

<d:Page.DataContext> 
    <local:FakeViewModel /> 
</d:Page.DataContext> 

zabawy!

PS: można także próbować użyć d:DesignData. To podejście również działa. Uważam, że nie jest to tak proste. W końcu to od ciebie zależy, jak to zrobić. Tak czy siak, nie przegap danych DeisgnTime!

+0

Chciałbym zobaczyć przykład użycia d: DesignData :) – swinefeaster

+0

Właściwie nigdy go nie znaleziono, zobacz: http://stackoverflow.com/questions/8303803/setting-design-time-datacontext-on-a-window -is-give-a-kompilator-błąd. Jest to lepsze, ponieważ możesz to zrobić tylko poprzez xaml i nie musisz mieć z nim zbyt wiele w kodzie, co ma więcej sensu (i tak dla mnie). – swinefeaster

+0

Porozmawiaj ze mną po wypróbowaniu innego podejścia w Windows8. –

5

Oto d: próbka DesignInstance:

będę również użyć owoców klasy Jerry'ego, ale nie będę używać MVVM tu nie trzeba, że ​​aby to działa.

Zasadniczo musimy utworzyć klasę modelu danych (np. ViewModel lub Model), która ma mieć dane projektowe (np. W tym przypadku tworzę klasę potomną, ale nie trzeba).

public class Fruit 
{ 
    public string Name { get; set; } 
} 

public class SampleFruit : Fruit 
{ 
    public SampleFruit() 
    { 
     Name = "Orange (Sample)"; 
    } 
} 

Wtedy w naszym XAML, możemy użyć d: DataContext związać klasę dzieci.

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" 
     DataContext="{Binding}" 
     d:DataContext="{Binding Source={d:DesignInstance Type=local:SampleFruit, IsDesignTimeCreatable=True}}"> 
    <TextBlock Text="{Binding Name}" 
       HorizontalAlignment="Center" VerticalAlignment="Center" 
       FontSize="42"/> 
</Grid> 

Uwaga ten wiersz:

d:DataContext="{Binding Source={d:DesignInstance Type=local:SampleFruit, IsDesignTimeCreatable=True}}" 

Teraz powinieneś zobaczyć swoje dane czasie projektowania zarówno Visual Studio Designer i mieszanki.

enter image description here enter image description here

PS: W Blend 2013 istnieje zakładka danych, która pozwala również tworzyć przykładowe dane.

+0

Brilliant. Po prostu genialny. Dzięki. –

Powiązane problemy