2012-06-10 13 views

उत्तर

21

काफी सरल।

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

इस तरह एक आधार ViewModel बनाएँ::

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

इस तरह एक असली ViewModel बनाएँ:

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

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

एक नकली-डेटा बनाएं

इस तरह एक मॉडल बनाने इस तरह ViewModel:

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"}, 
     }; 
    } 
} 

अपने XAML में यह करें:

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

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

मज़ा!

पीएस: आप d:DesignData का उपयोग करने का भी प्रयास कर सकते हैं। वह दृष्टिकोण भी काम करता है। मुझे लगता है कि यह सीधे आगे नहीं है। अंत में, यह आप पर निर्भर करता है कि यह कैसे करें। किसी भी तरह से, DeisgnTime डेटा पर ध्यान न दें! DesignInstance नमूना:

+0

डी: डिज़ाइनडाटा का उपयोग करने का एक उदाहरण देखना अच्छा लगेगा :) – swinefeaster

+0

वास्तव में इसे कभी नहीं मिला, इसे देखें: http://stackoverflow.com/questions/8303803/setting-design-time-datacontext-on-a- विन्डो -is देने एक संकलक त्रुटि। यह बेहतर है क्योंकि आप इसे xaml के माध्यम से कर सकते हैं और कोड में इसके साथ बहुत कुछ नहीं करना है, जो अधिक समझ में आता है (मुझे वैसे भी)। – swinefeaster

+0

विंडोज 8 में दूसरे दृष्टिकोण की कोशिश करने के बाद मुझसे बात करें। –

5

यहाँ घ है

मैं भी जैरी फल वर्ग का उपयोग करेगा, लेकिन मैं MVVM यहाँ का उपयोग नहीं होगा के रूप में आपको लगता है कि यह काम करता है बनाने के लिए की जरूरत नहीं है।

असल में, हमें डेटा मॉडल क्लास (उदाहरण के लिए, व्यूमोडेल या मॉडल) बनाने की आवश्यकता है जिसे हम डिज़ाइन डेटा चाहते हैं (उदाहरण के लिए, इस मामले में, मैं एक बाल वर्ग बनाता हूं, लेकिन आपको इसकी आवश्यकता नहीं है)।

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

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

फिर हमारे एक्सएएमएल में, हम बच्चे वर्ग को बांधने के लिए डी: डेटाकॉन्टेक्स्ट का उपयोग कर सकते हैं।

<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> 

इस लाइन कृपया ध्यान दें:

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

अब तुम दोनों दृश्य स्टूडियो डिजाइनर पर अपने डिजाइन डेटा देखें और ब्लेंड करना चाहिए।

enter image description here enter image description here

पी.एस. ब्लेंड 2013 में, एक डेटा टैब है जो आपको नमूना डेटा भी बना सकता है।

+0

शानदार। बस शानदार। धन्यवाद। –

संबंधित मुद्दे