여기에서는 종속성 객체로 작업하고 있지만 이전에는별로 도움이되지 않았지만 매우 유용합니다.WPF C# 기록 종속성 객체 데이터 수정
기본적으로 ListView에서이 개체를 편집 할 수있게 사용했습니다. 그러나 이러한 변경 사항을 다시 SQL에 기록해야합니다. 내 질문은 누군가가 데이터를 볼 때마다 SQL에 다시 쓰고 싶지 않기 때문에 데이터가 수정되었는지 여부를 기록하는 방법이 있는지입니다. 그 일의
public static bool DataModified = false;
public static readonly DependencyProperty DepartmentProperty = DependencyProperty.Register("Department", typeof(string), typeof(KPI), new UIPropertyMetadata(null));
public string Department
{
get { return (string)GetValue(DepartmentProperty); }
set { SetValue(DepartmentProperty, value); DataModified = true; }
}
그래서 뭔가 DataModified 속성이 TRUE로 설정됩니다 편집 할 때마다, 이것이 좋은 방법 :
public class KPI : DependencyObject
{
public static readonly DependencyProperty DepartmentProperty = DependencyProperty.Register("Department", typeof(string), typeof(KPI), new UIPropertyMetadata(null));
public string Department
{
get { return (string)GetValue(DepartmentProperty); }
set { SetValue(DepartmentProperty, value); }
}
public static readonly DependencyProperty KPINumberProperty = DependencyProperty.Register("KPINumberProperty", typeof(int), typeof(KPI), new UIPropertyMetadata(null));
public int KPINumber
{
get { return (int)GetValue(KPINumberProperty); }
set { SetValue(KPINumberProperty, value); }
}
}
내 생각 같은 것을 가지고 있었다 : 현재 나는이 있습니다 ? 아니면 누군가가 훨씬 더 나은 방법을 가지고 있습니까?
미리 감사드립니다.
SumGuy.
어떤 경우 바인딩 엔진이 SetValue를 직접 호출하는 대신 Department CLR 속성을 호출합니까? – Robin
@Robin : 말하기 어렵습니다. 경우에 따라 CLR 래퍼를 호출 할 수 있으며, 경우에 따라 'GetValue' 및'SetValue' 메서드를 직접 호출 할 수 있습니다. 게다가 CLR 속성은 인텔리 센스를 사용하여 XAML에서 이름을 표시합니다. – Nawaz
CLR 속성을 만드는 것이 더 나은 습관에 동의하지만 바인딩 엔진이 GetValue 또는 SetValue 대신에이를 사용하는 시간을 보거나 읽지 않았습니다. 나는 당신의 말을 받아 들일 것이다. – Robin