2011-10-13 15 views
12

Questa potrebbe essere una domanda stupida, ma è possibile definire alcuni dati di esempio come DataContext per visualizzare il DataTemplate in DesignView?Dati di progettazione per datatemplate in xaml

Al momento devo sempre eseguire la mia applicazione per vedere se le mie modifiche funzionano.

E.g. con il seguente codice DesignView mostra solo una casella di riepilogo vuota:

<ListBox x:Name="standardLayoutListBox" ItemsSource="{Binding myListboxItems}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 
       <Label Grid.Column="0" Content="{Binding text1}" /> 
       <Label Grid.Column="1" Content="{Binding text2}" /> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

Si prega di visualizzare le soluzioni presentate in questo post: http://stackoverflow.com/questions/1889966/what-approaches-are-available-to-dummy- design-time-data-in-wpf –

+0

Ho letto molti esempi per questo ormai, ma non sono davvero in grado di far riempire questo semplice Listbox in fase di progettazione. Sono sicuro che mi manca qualcosa, ma non riesco a scoprire cosa. È possibile fornire un campione funzionante per la mia listbox? – MTR

+0

Vedere la mia risposta qui sotto per il codice di esempio. –

risposta

15
public class MyMockClass 
{ 
    public MyMockClass() 
    { 
     MyListBoxItems.Add(new MyDataClass() { text1 = "test text 1", text2 = "test text 2" }); 
     MyListBoxItems.Add(new MyDataClass() { text1 = "test text 3", text2 = "test text 4" }); 
    } 
    public ObservableCollection<MyDataClass> MyListBoxItems { get; set; } 
} 

public class MyDataClass 
{ 
    public string text1 { get; set; } 
    public string text2 { get; set; } 
} 

In Your XAML

Aggiungere la dichiarazione dello spazio dei nomi

xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

Aggiungere il contesto dati finta alla finestra/risorse di controllo

<UserControl.Resources> 
    <local:MyMockClass x:Key="DesignViewModel"/> 
</UserControl.Resources> 

quindi modificare il tuo ListBox per fare riferimento all'oggetto fase di progettazione

<ListBox x:Name="standardLayoutListBox" 
d:DataContext="{Binding Source={StaticResource DesignViewModel}}" 
ItemsSource="{Binding MyListBoxItems}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 
       <Label Grid.Column="0" Content="{Binding text1}" /> 
       <Label Grid.Column="1" Content="{Binding text2}" /> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+3

Dopo aver aggiunto myListBoxItems = new ObservableCollection (); al costruttore di MyMockClass non è presente alcun messaggio di errore, ma Listbox è comunque vuoto – MTR

+0

Non riesco a vedere altri problemi. Seriamente seriamente nel volere dati sui tempi di progettazione, ti consiglio di esaminare i concetti di MEF. Utilizzo [Cinch] (http://www.codeproject.com/KB/WPF/CinchV2_3.aspx) (Cerca "ViewModel Design" su Spiacente, non posso fare a meno di una soluzione più semplice –

+1

Non dimenticare di impostare mc: Ignorabile nelle dichiarazioni dello spazio dei nomi: xmlns: mc = "http://schemas.openxmlformats.org/ markup-compatibility/2006 " mc: Ignorable = "d" –

Problemi correlati