binding - x: problemas de Bind Design Time
datatemplate uwp (1)
Para esta versión actual, prefiere Encuadernación sobre x: Enlazar
una respuesta de un ingeniero de Microsoft
Tengo los mismos problemas que tú, además de un montón de errores al usar x: Vincular en tiempo de diseño. La forma más rápida de corregirlo: usa el enlace como antes. Y cuando suelte, si el rendimiento está bajo consideración, cambie la vinculación a x: Vincular
Estoy tratando de construir mi aplicación UWP y actualmente estoy atascado con las excepciones de diseñador cuando trato de usar DataTemplate con x: Bind en un diccionario de recursos.
Creé un Diccionario de recursos "ItemTemplates.xaml" con un código subyacente (para garantizar la inicialización de x: Bind). El archivo contiene solo una plantilla:
<DataTemplate x:Key="HomeViewCategoryListItemTemplate" x:DataType="models:Category">
<Button Background="#88333333" Height="110" VerticalContentAlignment="Top" Padding="10" HorizontalAlignment="Stretch">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock FontWeight="Light" HorizontalAlignment="Center" Text="{x:Bind Name}" FontSize="{ThemeResource TextStyleExtraLargeFontSize}" />
<TextBlock Foreground="{ThemeResource ToolTipForegroundThemeBrush}" HorizontalAlignment="Center" Margin="0,10,0,0" Text="{x:Bind Description}" Grid.Row="1" TextAlignment="Center" TextWrapping="Wrap" />
</Grid>
</Button>
</DataTemplate>
Luego agregué este diccionario de recursos a App.xaml de esta manera:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ms-appx:///Resources/Core.xaml" />
<resources:ItemTemplates />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Ahora el proyecto no se puede usar, porque el diseñador arroja raras excepciones, pero cuando Limpio y Reconstruyo el proyecto y navego a la página HomeView.xaml, el diseñador muestra solo los elementos "ToString ()" predeterminados (básicamente la vista de lista contiene solo tres veces) el texto "Models.Categories") en la propiedad ListView y ItemTemplate de ListView está subrayado y muestra el siguiente error:
The resource "HomeViewCategoryListItemTemplate" could not be resolved.
Cuando vuelvo a App.xaml, veo otro subrayado allí (de la línea <resources:ItemTemplates />
) que dice:
The property ''DataType'' was not found in type ''DataTemplate''.
Ambos errores no son sensuales, porque cuando realmente ejecuto la aplicación, no hay problemas y todo funciona perfectamente. La única solución que he encontrado hasta ahora es incluir el ResourceDictionary dos veces, tanto de forma clásica como "compilada":
<ResourceDictionary Source="ItemTemplates.xaml" />
<resoures:ItemTemplates />
Esta solución funciona y todo funciona tanto en tiempo de diseño como en tiempo de ejecución, pero realmente creo que es bastante complicado y tiene que haber un enfoque mejor y más seguro o me falta algo trivial.
Estoy ejecutando la actualización 1 de Visual Studio 2015 y tengo instalado el último SDK de UWP. El proyecto se dirige a la compilación 10240.
Editar: otra excepción que el diseñador arroja muy a menudo y se cuelga por completo:
Unable to cast object of type ''System.String'' to type ''Models.Data.Categories.Category''.
De acuerdo con la salida de StackTrace esto sucede dentro del código ItemTemplates.xaml.cs, específicamente el método generado ProcessBindings
. Una vez más, el proyecto aún se compila y se ejecuta normalmente, pero el diseñador ni siquiera se molesta en intentar mostrar el resultado.