¿Cómo puedo obtener datos de DesignTime en WinRT XAML para que el diseñador muestre datos de muestra?¿Cómo tener datos de DesignTime en WinRT XAML?
Respuesta
Bastante simple.
Crear un modelo como este:
public class Fruit
{
public string Name { get; set; }
}
Crear un modelo de vista de base de esta manera:
public class BaseViewModel
{
public ObservableCollection<Fruit> Fruits { get; set; }
}
Crear un verdadero modelo de vista así:
public class RealViewModel : BaseViewModel
{
public RealViewModel()
{
if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)
LoadData();
}
public void LoadData()
{
// TODO: load from service
}
}
Create a-datos falsos ViewModel así:
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"},
};
}
}
hacer esto en su XAML:
<Page.DataContext>
<local:RealViewModel />
</Page.DataContext>
<d:Page.DataContext>
<local:FakeViewModel />
</d:Page.DataContext>
Que se diviertan!
PD: también puede intentar utilizar d:DesignData. Ese enfoque también funciona. Siento que no es tan directo. Al final, depende de usted cómo hacerlo. De cualquier manera, ¡no te pierdas los datos de DeisgnTime!
Aquí es el d: muestra DesignInstance:
También voy a usar la clase de frutas de Jerry, pero no voy a usar MVVM aquí, ya que no es necesario que para hacer que funcione.
Básicamente, necesitamos crear la clase de modelo de datos (por ejemplo, ViewModel o Model) que queremos tener datos de diseño (por ejemplo, en este caso, creo una clase secundaria, pero no es necesario).
public class Fruit
{
public string Name { get; set; }
}
public class SampleFruit : Fruit
{
public SampleFruit()
{
Name = "Orange (Sample)";
}
}
Luego en nuestro XAML, podemos usar d: DataContext para vincular la clase secundaria.
<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>
Tenga en cuenta que esta línea:
d:DataContext="{Binding Source={d:DesignInstance Type=local:SampleFruit, IsDesignTimeCreatable=True}}"
Ahora debería ver sus datos en tiempo de diseño tanto en diseñador de Visual Studio y mezcla.
P. S. En Blend 2013, hay una pestaña de datos que también le permite crear datos de muestra.
Brillante. Simplemente brillante. Gracias. –
- 1. Cómo agregar una matriz en WinRT XAML
- 2. ¿Dónde está RadialGradientBrush en WinRT XAML?
- 3. Primitivas XAML en WinRT/Win8 Metro
- 4. XAML - ¿Cómo tener uniones de entrada globales?
- 5. ¿Dónde está el selector de fecha en WinRT XAML?
- 6. WinRT XAML Buscar control dentro de FlipView Plantilla de artículo
- 7. Encabezado fijo en ListView y GridView WinRT xaml
- 8. Creación de pestañas en WinRT
- 9. En WinRT XAML, ¿cómo hacer referencia a las imágenes en ensamblado/proyecto externo/por separado?
- 10. Los datos de DesignTime no se muestran en Blend cuando se vinculan a CollectionViewSource
- 11. Detectar DesignTime en el código WP7
- 12. WinRT & Light temático
- 13. Pregunta sobre la gestión de ViewModel (DesignTime Vs Run Time)
- 14. Desplazamiento vertical dentro del grupo de elementos GridView en WinRT XAML
- 15. ¿Cómo de/de serializo JSON en WinRT?
- 16. Cómo deshabilitar Windows 8/WinRT AppBar?
- 17. Cómo cambiar ItemsPanelTemplate WrapGrid ¿De código XAML?
- 18. Cómo enlazar datos con propiedad pública en xaml
- 19. ¿Cómo se pasan datos a un IValueConverter en XAML?
- 20. ¿Cómo se enlazan los datos ListView ItemTemplates anidados en Metro/WinRT?
- 21. System.Reflection.Assembly.GetExecutingAssembly() en WinRT
- 22. Almacenamiento de base de datos local para aplicaciones WinRT/Metro
- 23. Cómo crear hashes SHA-256 en WinRT?
- 24. WinRT - clientes TCP?
- 25. Uso de FadeInThemeAnimation como una transición en WinRT
- 26. componente de inicialización - Tiempo de ejecución vs. designtime
- 27. WinRT y .NET aclaración (es)
- 28. WinRT Reemplazo de System.Environment.TickCount
- 29. ¿Cómo manejar las excepciones de WinRT que resultan en Excepción?
- 30. Debugging XAML databinding en Visual Studio 2012
Me encantaría ver un ejemplo del uso de d: DesignData :) – swinefeaster
En realidad, nunca lo ha encontrado, vea esto: http://stackoverflow.com/questions/8303803/setting-design-time-datacontext-on-a-window -is-giving-a-compiler-error. Esto es mejor porque puede hacerlo solo a través de xaml y no tiene que incluir mucho en el código, lo que tiene más sentido (para mí de todos modos). – swinefeaster
Háblame después de probar el otro enfoque en Windows8. –