Tengo una propiedad adjunta de tipo ObservableCollection en un control. Si agrego o elimino elementos de la colección, la interfaz de usuario no se actualiza. Sin embargo, si reemplazo la colección dentro de una nueva, el ViewModel se actualizará.La propiedad de dependencia ObservableCollection no se actualiza cuando se elimina el elemento en la colección
¿Alguien me puede dar un ejemplo de lo que debo hacer dentro del objeto Dependencia para que pueda manejar los cambios dentro de la colección?
parte del objeto de dependencia se enumeran a continuación:
public class RadCalendarBehavior : DependencyObject
{
private static void OnSpecialDaysChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var calendar = d as RadCalendar;
if (e.NewValue != null)
{
calendar.DayTemplateSelector = new SpecialDaySelector((ObservableCollection<DateTime>)e.NewValue, GetSpecialDayTemplate(d));
}
}
public static ObservableCollection<DateTime> GetSpecialDays(DependencyObject obj)
{
return (ObservableCollection<DateTime>)obj.GetValue(SpecialDaysProperty);
}
public static void SetSpecialDays(DependencyObject obj, ObservableCollection<DateTime> value)
{
obj.SetValue(SpecialDaysProperty, value);
}
public static readonly DependencyProperty SpecialDaysProperty =
DependencyProperty.RegisterAttached("SpecialDays", typeof(ObservableCollection<DateTime>), typeof(RadCalendarBehavior), new UIPropertyMetadata(null, OnSpecialDaysChanged));
}
}
entiendo que tengo que registrar que la colección ha cambiado, pero estoy seguro de cómo hacer esto dentro de la propiedad de dependencia
Gracias. ¿Es posible obtener una referencia del objeto de dependencia dentro de SpecialDays_CollectionChanged? – GoalMaker
¿Qué objeto de dependencia? ¿Te refieres al RadCalendar? No es fácil ... de todos modos, no estoy seguro de que tenga sentido: ¿y si varias instancias de RadCalendar están ligadas a la misma colección? –
Veo a qué te refieres. Estaba intentando que RadCalendar ya no destacara un día especial si se eliminó de la colección, así que pensé que podría hacer esto creando un nuevo SpecialDaySelector y estableciendo el DayTemplateSelector del control Calendar. – GoalMaker