para necesario microsoft mac español chrome silverlight

necesario - Crear un DataTemplate de Silverlight en el código



silverlight para mac (4)

Aunque no puede crearlo programáticamente, puede cargarlo desde una cadena XAML en un código como este:

public static DataTemplate Create(Type type) { return (DataTemplate) XamlReader.Load( @"<DataTemplate xmlns=""http://schemas.microsoft.com/client/2007""> <" + type.Name + @"/> </DataTemplate>" ); }

El fragmento anterior crea una plantilla de datos que contiene un solo control, que puede ser un control de usuario con los contenidos que necesita.

¿Cómo creo una plantilla de datos Silverlight en el código? He visto muchos ejemplos para WPF, pero nada para Silverlight.

Editar: Aquí está el código para el que ahora estoy usando esto, basado en la respuesta de Santiago a continuación.

public DataTemplate Create(Type type) { return (DataTemplate)XamlReader.Load( @"<DataTemplate xmlns=""http://schemas.microsoft.com/client/2007""> <" + type.Name + @" Text=""{Binding " + ShowColumn + @"}""/> </DataTemplate>" ); }

Esto funciona muy bien y me permite cambiar el enlace sobre la marcha.


Sí, Silverligt 4 es más antiguo que las versiones actuales de WPF. Cuando agrega una plantilla como recurso, es decir, como lo hice, agregué una plantilla de control de usuario en Application.xaml MergedResources entre ResourceDictionary. En XAML si la etiqueta implementada IDictionary puede usar x: atributo clave. Como eso

<ResourceDictionary> <DataTemplate x:Key="TextBoxEditTemplate"> <Some user control x:Name="myOwnControl" /> </DataTemplate> </ResourceDictionary>

¡De acuerdo! Puede acceder a su plantilla codificando que, Application.Current.resources ["TextBoxEditTemplate"], por otro lado, algunos métodos para encontrar miembros de esta plantilla no funcionarán. Además de esto, DataTemplate no implementa IDictionary, por lo que no puede asignar atributos x: Key para los elementos en este dataTemplate. como myOwnControl en el ejemplo.

Sin xaml current silverlight tiene algunas restricciones sobre la creación completamente dinámica de código detrás de DataTemplates.Incluso funciona en WPF.

De todos modos, la mejor solución para este punto es la creación del script XAML para datatemplate. Puede asignar algún elemento de valores al script DataTemplate. Creamos nuestros propios controles de usuario y tenemos algunas propiedades con DependencyObjectProperty ...

Por último, si su objeto no tiene herencia, es decir, no es un MyControl: UserControl, puede heredar MyObject: DependencyObject, de esta manera puede llegar a su objeto al llamar como Application.Current.Resources.FirstChilderen ...

FindName solo funciona en WPF


Tuve algunos problemas con este código, obteniendo excepciones de elemento no creado. Solo como referencia, era que necesitaba mi espacio de nombre incluido en DataTemplate ...

private DataTemplate Create(Type type) { string xaml = @"<DataTemplate xmlns=""http://schemas.microsoft.com/client/2007"" xmlns:controls=""clr-namespace:" + type.Namespace + @";assembly=" + type.Namespace + @"""> <controls:" + type.Name + @"/></DataTemplate>"; return (DataTemplate)XamlReader.Load(xaml); }


cita de MSDN :

El uso de XAML que define el contenido para crear una plantilla de datos no se expone como una propiedad configurable. Es un comportamiento especial integrado en el procesamiento XAML de un elemento de objeto DataTemplate.