2011-01-22 11 views
8

Estoy tratando de crear un lienzo, con elementos ubicados en ubicaciones específicas en el canvast, ya que no puedo vincular una fuente y una plantilla directamente a un lienzo, he usado un ItemsControl. Pero hay un problema con todos los artículos se encuentran en 0,0. Y he probado los enlaces que no devuelven 0,0. ¿Cómo puedo hacer que esto funcione para que los artículos estén ubicados en el lugar correcto?Encuadernación de lona en silverlight

También es posible crear 2 capas en el lienzo, donde cada capa está vinculada a una fuente diferente, y utiliza una plantilla diferente?

Esto es en Silverlight

<ItemsControl Grid.Row="1" Grid.Column="1" 
       Width="650" Height="650" 
       ItemsSource="{Binding Skills}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Canvas Margin="0" 
       Width="650" Height="650" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Canvas.Top="{Binding Top}" Canvas.Left="{Binding Left}"> 
        <TextBlock Text="{Binding Name}" /> 
       <Image Source="{Binding Icon}" /> 
       <StackPanel Orientation="Horizontal" > 
        <TextBlock FontWeight="Bold" TextAlignment="Center" Text="{Binding SkillPointsStatusText}" /> 
       </StackPanel> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

prueba con ItemContainerStyle

<ItemsControl Grid.Row="1" Grid.Column="1" 
       Width="650" Height="650" 
       ItemsSource="{Binding Skills}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Canvas Margin="0" 
       Width="650" Height="650" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding Name}" /> 
       <Image Source="{Binding Icon}" /> 
       <TextBlock FontWeight="Bold" TextAlignment="Center" Text="{Binding SkillPointsStatusText}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <ItemsControl.ItemContainerStyle> 
     <Style> 
      <Setter Property="Canvas.Top" Value="{Binding Top}" /> 
      <Setter Property="Canvas.Left" Value="{Binding Left}" /> 
     </Style> 
    </ItemsControl.ItemContainerStyle> 
</ItemsControl> 

Bueno, tengo droped el proyecto, pero voy a dejar la pregunta abierta debería uno tener un anwser

+0

he añadido una recompensa, ya que prácticamente matado la pregunta cuando la preguntaste con mi respuesta no operativa, lo siento. Con suerte, esto le dará la atención que merece. –

+0

¿Puedes publicar el código para las clases a las que estás intentando vincular? – viggity

Respuesta

7

Todos de lo siguiente no funciona en SL4 ya que depende de enlaces en un Setter.Value.


intente configurar la unión en ItemContainerStyle desde su StackPanel no es el elemento raíz; su plantilla se colocará en un ContentPresenter, por lo que se ignorarán sus propiedades adjuntas para el posicionamiento del lienzo en el StackPanel.

<ItemsControl.ItemContainerStyle> 
    <Style> 
     <Setter Property="Canvas.Top" Value="{Binding Top}" /> 
     <Setter Property="Canvas.Left" Value="{Binding Left}" /> 
    </Style> 
</ItemsControl.ItemContainerStyle> 

Editar: Si Silverlight no admite ItemContainerStyle puede establecer el estilo universal para ContentPresenters que debería funcionar igual de bien:

<ItemsControl ItemsSource="{Binding Data}"> 
     <ItemsControl.Resources> 
      <Style TargetType="ContentPresenter"> 
       <Setter Property="Canvas.Left" Value="{Binding Left}"/> 
       <Setter Property="Canvas.Top" Value="{Binding Top}"/> 
      </Style> 
     </ItemsControl.Resources> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <Canvas/> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       ... 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
+0

¿Dónde se inserta este ? Sigo recibiendo el error "La propiedad adjunta 'ItemContainerStyle' no se encontró en el tipo 'ItemsControl'". – Androme

+0

No es una propiedad adjunta, la coloca como elemento secundario de ItemsControl de la misma manera que usa . es decir, ** no ** pertenece dentro de ItemTemplate. –

+0

Ver he insertado en la primera publicación, esto me da el error, Error La propiedad 'ItemContainerStyle' no existe en el tipo 'ItemsControl' en el espacio de nombres XML 'http://schemas.microsoft.com/winfx/2006/xaml/presentation '. – Androme

Cuestiones relacionadas