나는이 DataGrid
있는 일부 데이터 그리드의 요소를 업데이트 수동
public static DependencyProperty MinutesProperty =
DependencyProperty.Register("Minutes", typeof(string), typeof(TimelineControl),
new PropertyMetadata(OnMinutesChanged));
public string Minutes
{
get { return (string)GetValue(MinutesProperty); }
set { SetValue(MinutesProperty, value); }
}
private static void OnMinutesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
Console.WriteLine("foo bar");
}
I에후기는 일부 행을 추가 :
TimeScale temp;
temp = this.addEvent(temp, 23);
temp = this.addEvent(temp, 24);
temp = this.addEvent(temp, 25);
temp = this.addEvent(temp, 26);
dgTimeline.Items.Add(temp);
private TimeScale addEvent(TimeScale temp, int time)
{
PropertyInfo propertyInfo = temp.GetType().GetProperty("Time" + (time/60));
if (propertyInfo.GetValue(temp, null) != null)
{
if (propertyInfo.GetValue(temp, null).ToString().IndexOf((time % 60).ToString()) == -1)
{
propertyInfo.SetValue(temp, Convert.ChangeType(propertyInfo.GetValue(temp, null) +
"," + (time % 60), propertyInfo.PropertyType), null);
}
}
else
{
propertyInfo.SetValue(temp, Convert.ChangeType(time % 60, propertyInfo.PropertyType), null);
}
return temp;
}
모두가 지금까지 잘 작동의 OnMinutesChanged
이 잘 유발되고 UI가 업데이트됩니다. 문제는 DataGrid
에있는 항목을 업데이트하려고 시도하면 OnMinutesChanged
이 트리거되지 않으며 UI가 업데이트되지 않는다는 것입니다.
나의 목표는 OnMinutesChanged
으로 변경된 특정 요소의 UI를 수동으로 업데이트하는 것입니다. dgTimeline.Items.Refresh()
을 호출하면 전체 표가 새로 고쳐지고 모든 것이 작동하고 OnMinutesChanged
이 호출됩니다. 문제는이 격자가 매초마다 업데이트되므로 요소 수가 너무 많아 (쉽게 500 개 이상이므로) dgTimeline.Items.Refresh()
을 호출하면 응용 프로그램이 거의 정지됩니다. 난 그냥 초당 3 요소의 UI를 업데이 트해야합니다, 모든 500, 그래서 내가 수동으로하고 싶어.
올바른 일을하고 있습니까? 그렇다면 그리드를 업데이트 할 때 OnMinutesChanged
이 호출되지 않는 이유는 무엇입니까?
그래서'bTemp.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;를 설정하면'OnMinutesChanged'가'dgTimeline.Items.Refresh()'를 호출하지 않고 실행됩니다. –
@FredericoSchardong : 그래야합니다. –
불행히도 그렇게하지 않습니다. –