none
Acceder a los controles dentro de un Style RRS feed

  • Pregunta

  • Definido el siguiente estilo:
    
    
     <Style TargetType="controls:TreeViewItem" x:Name="StyleEditarM">
    
       <Setter Property="HeaderTemplate">
    
        <Setter.Value>
    
         <DataTemplate>
    
          <StackPanel Orientation="Horizontal">
    
           <Image Source="/Imagenes/M1.png" HorizontalAlignment="Left"
    
       VerticalAlignment="Center"
    
       Margin="4,0,0,4"
    
       Height="32"
    
       Width="32"></Image>
    
           <TextBox HorizontalAlignment="Left"
    
            VerticalAlignment="Center" Foreground="Black" Margin="4,0,0,0" Background="Transparent" LostFocus="NodoPierdoFoco" />
    
          </StackPanel>
    
         </DataTemplate>
    
        </Setter.Value>
    
       </Setter>
    
      </Style>
    
    

    Por código cómo se accede al textbox. Por mucho que lo intento no lo consigo. He estado mirando aportaciones similares de David en el foro (soluciona algún caso parecido creándole un evento dentro del estilo) pero no es lo que busco. Pretendo asignar el foco al textbox después de cargar todos los TreeviewItems.

    Muchas gracias por las aportaciones.

    martes, 20 de abril de 2010 13:41

Respuestas

  • Al final lo he resuelto partiendo del concepto trabajado por David. He creado un evento (loaded) dentro del estilo treeviewitem en el componente textbox. Éste llama al evento desarrollado en el App y compuesto por una propiedad formada por un textbox. En el evento capturo el sender y lo paso a la propiedad del textbox. Posteriormente le paso el foco.

     Private Sub CargaText(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    
      Try
    
       TextTreeviewItem = CType(sender, TextBox)
       TextTreeviewItem.Focus()
    
      Catch ex As Exception
       Er(ex)
      End Try
    
     End Sub
     El estilo queda de la forma:
    <Style TargetType="controls:TreeViewItem" x:Name="StyleEditarM">
    
     <Setter Property="HeaderTemplate">
    
     <Setter.Value>
    
      <DataTemplate>
    
      <StackPanel Orientation="Horizontal">
    
      <Image Source="/Imagenes/M1.png" HorizontalAlignment="Left"
    
     VerticalAlignment="Center"
    
     Margin="4,0,0,4"
    
     Height="32"
    
     Width="32"></Image>
    
      <TextBox HorizontalAlignment="Left"
    
      VerticalAlignment="Center" Foreground="Black" Margin="4,0,0,0" Background="Transparent" Loaded="CargaText" LostFocus="NodoPierdoFoco" />
    
      </StackPanel>
    
      </DataTemplate>
    
     </Setter.Value>
    
     </Setter>
    
     </Style>
    
    • Marcado como respuesta CorsarioVasco miércoles, 21 de abril de 2010 10:17
    miércoles, 21 de abril de 2010 10:16