コントロールにObservableCollectionタイプの添付プロパティがあります。コレクションにアイテムを追加または削除すると、UIは更新されません。しかし、コレクション内のコレクションを新しいものに置き換えると、ViewModelが更新されます。ObservableCollection依存関係プロパティは、コレクション内のアイテムが削除されても更新されません。
私がDependencyオブジェクト内で行う必要があることの例を、コレクション内の変更を処理できるように教えてもらえますか?依存関係オブジェクトの
一部を以下にリストされている:
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));
}
}
私は、コレクションが変更されたことを登録する必要があることを理解し、私は依存関係プロパティの中にこれを実行するかどうかはわからないよ
ありがとうございます。 SpecialDays_CollectionChanged内の依存関係オブジェクトの参照を取得することは可能ですか? – GoalMaker
どの依存オブジェクトですか?あなたはRadCalendarを意味しますか?とにかく、私はそれが理にかなっているとは確信していません:いくつかのRadCalendarのインスタンスが同じコレクションにバインドされている場合はどうでしょうか? –
私はあなたが何を意味するかを見ます。私はRadCalendarがコレクションから削除されても特別な日を強調表示しないようにしようとしていたので、新しいSpecialDaySelectorを作成し、CalendarコントロールのDayTemplateSelectorを設定することでこれを行うかもしれないと思った。 – GoalMaker