Типы данных и пользовательские элементы управления:
Я определил свой собственный тип, который является "IList bool" , и имеет свой собственный индексатор.Этот класс хранит, повторять ли что-то в определенный день, т. Е. Если бы данные [2] были истинными, то это означало бы, что что-то должно быть повторено в среду.Ниже приведена часть кода
public class WeeklyDayPresence : INotifyCollectionChanged, IList<bool>, ISerializable
{
private List<bool> Data { get; set; }
public bool this[int index]
{
get => Data[index];
set
{
bool temp = Data[index];
Data[index] = value;
CollectionChanged?.Invoke(this,new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace,value,temp,index));
}
}
}
Теперь у меня есть система выбора, которая позволяет пользователям включать или выключать кнопки, привязанные к определенному дню, чтобы они могли выбирать, какие дни должны быть истинными илиfalse.
Поэтому я создал элемент управления («DayOfWeekSelector»), который по сути представляет собой макет стека из 7 очень похожих пользовательских кнопок.Вот код для пользовательской кнопки:
public class DayOfWeekButton : Button
{
public static readonly BindableProperty SelectedProperty =
BindableProperty.Create("Selected", typeof(bool), typeof(bool), false);
public bool Selected
{
get => (bool) GetValue(SelectedProperty);
set
{
SetValue(SelectedProperty, value);
RefreshColours();
}
}
public DayOfWeekButton()
{
RefreshColours();
Clicked += DayOfWeekButton_Clicked;
}
private void DayOfWeekButton_Clicked(object sender, EventArgs e)
{
Selected = !Selected;
}
}
В моем DayOfWeekSelector я передаю объект, который "имеет" WeeklyDayPresence:
public class EventOccurrenceRepeater : NotifyModel, ISerializable
{
private WeeklyDayPresence _repeatOnDay;
public WeeklyDayPresence RepeatOnDay
{
get => _repeatOnDay;
set => SetValue(ref _repeatOnDay, value);
}
}
Проблема:
Когда я пытаюсь привязать значения к кнопке, я получаю System.Reflection.TargetParameterCountException .
private void AddButton(string text, int ID)
{
var button = new DayOfWeekButton {Text = text};
var binding = new Binding($"RepeatOnDay[{ID}]", BindingMode.TwoWay);
button.SetBinding(DayOfWeekButton.SelectedProperty, binding);
button.BindingContext = Repeater; // Throws Exception after this
//...
}
Что это за исключение и почему я его получаю?Я прикрепил ссылку к трассировке стека, если это помогает