このコードには、XAMLバインディングのプロパティ変更イベントを発生させるインデクサーと、私たちのフレームワークのイベントがあります。インデクサーのRaiseプロパティが変更されていません
インデクサーでいくつかのXAMLコントロールをバインドしましたが、インターフェイスを初期化するときにバインディングが原因でget内でブレークします。しかし、コントロールの値を変更すると、OnSomeBusinessCurrentEntityPropertyChanged
メソッドでブレークし、if
という条件を入力し、インデクサー名でOnPropertyChanged
イベントを呼び出します。しかし、インターフェースは決して更新されません。
私はこのコードを書いたときにUIがうまくいっていたのですが、Total
をDailyTotal
にリネームした後、動作を停止しました。誰かがIndexerがリフレッシュされない理由の手がかりを持っていますか?
ここで結合と私のXAMLコントロールのexempleです:
<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