백업 값을 보유하고있는 사용자 정의 텍스트 상자에 대한 int 종속성 속성이 있습니다. 그것은 int에 바인딩되어 있습니까? 속성을 DataContext에 추가합니다.PropertyChanged가 실행되었지만 소스 값이 변경되지 않은 경우 WPF 종속성 속성 설정자가 실행되지 않음
DataContext에서 PropertyChanged 이벤트를 발생시키고 원본 속성의 값이 변경되지 않으면 (null 상태로 유지) 종속성 속성의 설정자가 시작되지 않습니다.
원본 속성이 동일하게 유지되는 경우에도 PropertyChanged에서 사용자 지정 텍스트 상자 (텍스트 지우기)를 업데이트하려고하기 때문에이 문제가 발생합니다. 그러나, 내가 원하는 (UpdateSourceTrigger 속성이 있지만, 원본이 아닌 대상을 업데이트하려는) 바인딩 옵션을 찾지 못했습니다. 아마도 텍스트 상자에 텍스트를 지워야한다고 알리는 더 좋은 방법이 있습니다. 나는 어떤 제안이든 열어 두었습니다.
private int? _foo;
public int? Foo
{
get
{
// The binding is working, because _foo is retrieved (hits a breakpoint here).
// RaisePropertyChanged("Foo") is called from elsewhere, even if _foo's value is not changed
return _foo;
}
set
{
// Breakpoint is hit on user input, so the binding is working
_foo = value;
RaisePropertyChanged("Foo");
}
}
지정 텍스트 상자 (타겟) :
public double? Value
{
get
{
return (double?)GetValue(ValueProperty);
}
set
{
// When Foo is null and Value is also null, the breakpoint is not hit here
SetValue(ValueProperty, value);
// This is the piece of code that needs to be run whenever Value is set to null
if (value == null && !String.IsNullOrEmpty(Text))
{
Text = String.Empty;
}
}
}
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(double?), typeof(CustomTextbox), new PropertyMetadata(null, ValueChangedHandler));
private static void ValueChangedHandler(DependencyObject dependecyObject, DependencyPropertyChangedEventArgs e)
{
// When Foo is null and Value is also null, the breakpoint is not hit here
}
몇 가지 코드를 게시 할 수 있습니까? 문제를 훨씬 쉽게 이해할 수 있습니다. 얼마나 정확히 DataContext에서 PropertyChanged 이벤트를 발생시키고 있습니까? – wpfwannabe
소스가 같더라도 업데이트해야합니다. 코드를 게시하면 솔루션을 쉽게 찾을 수 있어야합니다. –
일부 코드를 게시했습니다. 애플리케이션이 너무 복잡하여 전체 소스를 여기에 포함 할 수 없습니다. 이름이 바뀌 었습니다. –