Метод set свойства зависимости WPF, не стреляя, когда PropertyChanged запущен, но исходное значение, не изменяется

У меня есть международное свойство зависимости на моем пользовательском Текстовом поле, которое содержит отступающее значение. Это связывается с интервалом? свойство на DataContext.

Если я генерирую событие PropertyChanged в своем DataContext, и исходное значение свойства не изменяется (остается пустым), то метод set свойства зависимости не запущен.

Это - проблема, потому что я хочу обновить пользовательское Текстовое поле (очистите текст) на PropertyChanged, даже если исходное свойство остается таким же. Однако я не нашел параметра привязки, который делает то, что я хочу (существует свойство UpdateSourceTrigger, но я хочу обновить цель здесь, не источник). Возможно, существует лучший способ сообщить Текстовому полю, что это должно очистить свой текст, я открыт для любых предложений.

Источник, согласно просьбе (упрощенный)

DataContext (источник):

  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
        }
5
задан Sandor Davidhazi 28 April 2010 в 13:01
поделиться