Pregunta

Suponiendo que tengo esta definición struct en C #:

    public struct TimeSlotInfo
    {
        public int TimeSlotID;
        public int StartMin;
        public int CalcGridColumn;
        public string BackgroundCol;
        public bool ToDisable;
    }

Y tengo una consulta LINQ como así:

var TimeSlotsInfo = 
from ts in datacon.TimeSlots
select new TimeSlotInfo
{
    TimeSlotID = ts.TimeSlotID,
    StartMin = ts.StartMin,
    CalcGridColumn = CalcTimeSlotGridColumn(ts.StartMin),
    BackgroundCol = ts.ColorName,
    ToDisable = false
};

Si fijo la propiedad ItemsSource de, digamos, un cuadro de lista de la siguiente manera:

lstBox.ItemsSource = TimeSlotsInfo;

Ahora, ¿Cómo puedo configurar una ruta de enlace para hacer referencia al campo "BackgroundCol" del resultado de la consulta anterior?

He intentado {Binding Path = TimeSlotInfo.BackgroundCol}, {Binding Path = TimeSlotInfo / BackgroundCol}, y finalmente {Binding Path = BackgroundCol} ... ninguno de ellos parece estar funcionando ..

¿Alguien puede ayudar? He tratado de simplificar el ejemplo como sea posible. Espero que mi problema es lo suficientemente clara. Gracias de antemano.

¿Fue útil?

Solución

El último es correcta ({Binding Path = BackgroundCol}) - sin embargo, no se puede obligar a los campos, sólo se puede obligar a Propiedades. Definir la clase que sea:

class TimeslotInfo {
    public int TimeslotId {get; set;}
    /* Etc... */
}

Otros consejos

No sólo debe utilizar las propiedades de la unión, como dice Pablo, pero en general usted debe evitar pública campos en el primer lugar.

Además, esto no se siente como tiene que ser una estructura - lo que realmente quiere la semántica de tipo valor? En caso de duda, en caso de incumplimiento a la creación de clases en C # -. Es bastante raro que realmente ¿Quieres una estructura

Por último, incluso si hicieron que desee una estructura, que debe casi siempre hacer estructuras inmutables. Ya casi seguro de tener resultados inesperados de estructuras mutables. Todo está bien definido y por buenas razones, pero probablemente no sea el comportamiento que espera. estructuras mutables son malos.

Si desea que sus datos para mostrar todo lo que se almacena en BackgroundCol, sólo puede establecer la propiedad DisplayMemberPath en su ListBox para "BackgroundCol". Si esto no es lo que estamos tratando de lograr, por favor ser más específico.

Espero que esto ayude !!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top