2009-11-30 19 views
5

Estoy intentando enlazar a un elemento dentro de una colección, pero el índice para ese elemento debe ser "variable". Tome la sintaxis siguiente seudo por ejemplo:Es posible vincular una variable a un elemento de recopilación

<TextBlock Text="{Binding Fields[{Binding Pos}]}" /> 

es algo como esto posible? Si mi propiedad Pos es 1, debería vincularse al primer elemento de la colección "Campos" y si mi Pos es 3 debería vincularse al tercer elemento de la colección. Simplifiqué mi problema a esta situación ...

¿Algo así es factible y cómo?

Respuesta

0

¿por qué no utiliza una propiedad que devuelve el elemento actual en la colección y lo vincula a su control WPF?

tales como:

class myCollection 
{ 

    private string _current; 

    public string CurrrentField 
    { 
     get { return _current; } 
    } 

    // TODO: Set current item to whatever the current item is... 
} 

EDIT:

En ese caso creo que necesita para crear una clase de ayuda que realiza un seguimiento de sus columnas en la cuadrícula de datos y alinea después con los artículos en su colección, para que la propiedad que está vinculada a su UI obtenga actualizaciones correctamente.

Primero llene la colección, luego sabrá cuántos elementos tiene, luego con el bucle de clase auxiliar a través de la colección y asigne elementos a la propiedad, luego pase a la siguiente columna en su cuadrícula, etc.

Creo que se trata de escribir un algoritmo para usted.

+0

porque estoy usando todos los elementos de una colección pero en diferentes enlaces. como dije, esto es solo una simplificación del problema en sí. Lo estoy usando en columnas de una cuadrícula de datos y quiero que todas las columnas de la cuadrícula de datos utilicen la misma plantilla (pero la primera columna tendría un enlace a Campos [0], la segunda a Campos [1] etc. y yo no sé cuántas columnas tendrá la interfaz de usuario en el futuro, eso se genera a partir de una base de datos). básicamente se trata de resolver el problema descrito anteriormente. pero gracias por sugerir esta posibilidad. – Jan

5

Sí, es posible. Debe implementar el convertidor de enlace que convertirá la recopilación en el elemento de recopilación y tomará el índice como parámetro de conversión. A continuación, vamos a usar de esta manera:

<TextBlock Text="{Binding Fields, 
        Converter={StaticResource CollectionToItemConverter, 
        ConverterParameter={Binding Pos}}}" /> 

Si necesita un código para este convertidor o información adicional acerca de convertidores, por favor dejar un comentario.

Espero que ayude.

+0

Gracias. Esto suena realmente bien para mí. – Jan

+0

¡Me alegra oírlo! =) No se olvide de aceptar la respuesta si esto funcionó para usted. =) – levanovd

+0

Algún día, le pediré a IValueConverter que se case conmigo ... – cwap

1

intente leer en ICollectionView ... puede ayudarlo ya que puede darle automáticamente el índice del artículo para encuadernar su texto.

Cuestiones relacionadas