У меня есть этот код Indexer и событие из нашей структуры, которые повышают событие изменения свойства для привязки XAML.Raise свойство изменено для индексатора не работает
Я привязал элемент управления XAML к индексу, работа по связыванию приводит к его разрыву в get при инициализации интерфейса. Но, когда я изменяю значение элемента управления, он разбивается на OnSomeBusinessCurrentEntityPropertyChanged
и вводит условие if
и вызывает событие OnPropertyChanged
с именем Indexer. Но интерфейс никогда не обновляется.
Одна из самых странных вещей - это то, что сначала, когда я писал этот код, он работал, пользовательский интерфейс был освежающим, после того как я переименовал Total
в DailyTotal
и с тех пор он прекратил работать. Кто-нибудь знает, почему Indexer не обновляется.
Вот Exemple моего контроля XAML с привязкой:
<max:MaxLabel x:Name="tbnTotalHour1" max:CustomBindingBehavior.IsCustomBindingIgnored="True" Content="{Binding Path=[0], Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
Код:
protected override void OnSomeBusinessCurrentEntityPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnSomeBusinessCurrentEntityPropertyChanged(sender, e);
if (sender is TimeSheet)
this.OnPropertyChanged("Total[]")
}
[IndexerName("Total")]
public long this[int dateModifier]
{
get
{
var date = this.WorkingEntity.PayrollPeriodStartDate.AddDays(dateModifier);
TimeSpan total = TimeSpan.Zero;
foreach (var view in this.CurrentWorkingTimesheetByActivity.ViewList)
{
var detail = view.Details[date];
if (detail != null)
total += detail.TimeSheet.Duration;
}
return total.Ticks;
}
}
Мне нравится, как люди downvote, не давая любые комментарии. Я думаю, что мой вопрос довольно законный. –
Упрощенный для полезного и ясного вопроса. – jonathana