1

私は3つのクラスAssignment(抽象)、、、CourseAssignmentを持っていStudentAssignmentます。 どちらも抽象クラスから継承StudentAssignmentします。CourseAssignmentAssignment

私は WPF カレンダーのルック アンド フィールを再フォーマットした複雑なスタイルを持っていますが、自分のカレンダーに割り当てを表示したいので、カスタム コントロールを作成しました ( MyCalendarCalendar から継承し、依存関係プロパティを追加すると呼びます)。 (以下のコードを参照) これにより、割り当てリストをカレンダーにバインドできます。

public static DependencyProperty AssignmentsProperty =
        DependencyProperty.Register
        ("Assignments",typeof(ObservableCollection<Assignment>),typeof(Calendar));

    public ObservableCollection<Assignment> Assignments
    { 
        get {return (ObservableCollection<Assignment>)GetValue(AssignmentsProperty);} 
        set {SetValue(AssignmentsProperty, value); }
    }

カレンダー コントロールを配置するタブ コントロールに応じて、バインディングはStudentAssignmentまたはの監視可能なコレクションになりますCourseAssignmentCourseAssignmentカレンダーは、割り当てリストがまたはリストであるかどうかを実際に気にする必要はありません。StudentAssignment必要なのは期日と説明だけだからです(両方のプロパティは基本抽象クラスにあります)が、ここに私の問題があります。IMul​​tiValueConverter を使用して、割り当てを正しい日に配置しています

[ValueConversion(typeof(ObservableCollection<Assignment>), typeof(ObservableCollection<Assignment>))]
public class AssignmentConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        DateTime date = (DateTime)values[1];
        ObservableCollection<Assignment> assignments = new ObservableCollection<Assignment>();

        foreach (Assignment assignment in (ObservableCollection<Assignment>)values[0])
        {
            if (assignment.DueDate.Date == date)
            {
                assignments.Add(assignment);
            }
        }
        return assignments;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

バインディングを機能させる最良の方法は何ですか? バインドを観察可能なコレクションに設定したいのはわかっていますが、XAML でそれを行うとcannot convert from observablecollection(CourseAssignment) to observablecollection(Assignment)エラーが発生します。バインディングを行う前に、何らかの方法で CourseAssignments のコレクションを Assignments のコレクションに変換する必要がありますよね? それを行う最善の方法は何ですか?

4

0 に答える 0