Tengo una propiedad de dependencia int en mi Textbox personalizado, que tiene un valor de respaldo. Está vinculado a un int? propiedad en el DataContext.El conjunto de propiedades de dependencia de WPF no se activa cuando se activa PropertyChanged, pero el valor de origen no se cambia
Si visualizo el evento PropertyChanged en mi DataContext, y el valor de la propiedad de origen no cambia (permanece nulo), el filtro de la propiedad de la dependencia no se activa.
Esto es un problema, porque quiero actualizar el cuadro de texto personalizado (borrar el texto) en PropertyChanged, incluso si la propiedad de origen se mantiene igual. Sin embargo, no encontré ninguna opción vinculante que haga lo que quiero (hay una propiedad UpdateSourceTrigger, pero quiero actualizar el objetivo aquí, no la fuente). Quizás haya una mejor manera de informar al Textbox que necesita borrar su texto, estoy abierto a cualquier sugerencia.
Fuente, conforme a lo solicitado (simplificado)
DataContext (fuente):
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");
}
}
personalizada del cuadro de texto (objetivo):
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
}
¿Se puede publicar algún código? Haría que entender su problema sea mucho más fácil. ¿Cómo está generando el evento PropertyChanged en su DataContext? – wpfwannabe
Se debe actualizar incluso si la fuente es la misma. Publique su código, la solución debe ser fácil de detectar. –
Publiqué algún código. La aplicación es demasiado compleja para incluir toda la fuente aquí. Los nombres fueron reemplazados. –