¿Cómo hago enlaces en ItemContainerStyle en WinRT?

Estoy intentando vincular una colección a un ItemsControl, con un canvas como el panel de elementos y con el canvas de cada elemento. Izquierda y superior vinculadas a las propiedades en los objetos del elemento. Básicamente estoy tratando de volver a crear el enlace de datos 2-D que describí en esta publicación en mi blog , pero esta vez en WinRT en lugar de WPF.

Dado que ItemsControl envuelve su contenido ItemTemplate en otro elemento UI (un ContentPresenter, en el caso de WinRT), y son esos elementos contenedor / contenedor que se colocan directamente dentro del panel de elementos, la Izquierda y la Superior deben establecerse en esos contenedores; no puedes simplemente configurarlos en DataTemplate. En WPF, es bastante fácil hacer esto con enlaces en ItemContainerStyle, por ejemplo:

      

Pero cuando bash lo mismo en un proyecto WinRT / XAML, no obtengo nada. Ni siquiera errores vinculantes. Si codigo un valor, funciona; pero si utilizo un enlace, la propiedad simplemente permanece en su valor predeterminado (cero) y no se muestran errores de enlace en la ventana de resultados.

         

He verificado que los ContentPresenters tienen el DataContext correcto (es decir, el elemento de la colección, no la colección en sí o algo más funky), por lo que podría pensar que estas vinculaciones funcionarían bien. Pero ni siquiera parecen ser evaluados. Si pongo un enlace incorrecto en otro lugar y ejecuto una comstackción de depuración, veo errores de enlace en la ventana de resultados del depurador; pero si hago referencia a una propiedad sin sentido dentro de ItemContainerStyle, no se muestran errores de enlace.

Aquí hay un ejemplo más completo, que (hasta donde sé) debería funcionar bien en WPF, pero eso deja todo en el origen en WinRT:

                  

He intentado algunas de las opciones más exóticas de Binding , específicamente RelativeSource . Cuando utilicé RelativeSource TemplatedParent , el comportamiento de “no hacer nada” no se modificó. Sin embargo, cuando usé RelativeSource Self , recibí un error vinculante, diciendo que la propiedad no existía en el tipo Setter . Es tomar ese Self un poco demasiado literalmente, allí.

También jugué con TemplateBinding , pero nunca asimilé para qué se usa, y todo lo que obtuve fueron errores COM incomprensibles (bienvenidos a WinRT, un enorme paso atrás tecnológico).

¿Cómo puedo (a) hacer que las vinculaciones funcionen correctamente (hay otras opciones de Binding que podría utilizar para forzarlas a que funcionen correctamente?), O (b) De lo contrario, permitir que elementos en mi ItemsContainer arbitrariamente en un Canvas basado en las conexiones de datos a las propiedades en los elementos de la colección?

Enlaces no son compatibles con Setters. Creo que Silverlight solo los obtuvo en la versión 5, si es que lo hizo. Para soluciones alternativas, puede ver mi artículo anterior aquí . Básicamente, usted define una propiedad de dependencia adjunta que configura el enlace por usted.

La aplicación de RenderTransform parece estar funcionando bien en Silverlight y Winrt / Metro / 8.1:

                 

Alternativas: Aquí hay otras oportunidades para adjuntar enlaces mediante código durante la creación del “Artículo” antes de la presentación.

ItemsControl.PrepareContainerForItemOverride http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.itemscontrol.preparecontainerforitemoverride.aspx

ListViewBase.ContainerContentChanging http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.listviewbase.containercontentchanging.aspx