У меня есть свойство зависимостей ИНТ на моей пользовательской Textbox, который содержит значение подложки. Он связан с int? свойство в DataContext.WPF свойства зависимостей сеттер не стрелять, когда PropertyChanged обжигают, но значение источника не изменяется
Если я поднимаю событие PropertyChanged в своем DataContext, а значение свойства источника не изменяется (остается неопределенным), тогда установщик свойства зависимостей не запускается.
Это проблема, потому что я хочу обновить пользовательский текстовый блок (очистить текст) в PropertyChanged, даже если свойство source остается неизменным. Тем не менее, я не нашел опции привязки, которая делает то, что я хочу (есть свойство 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");
}
}
Пользовательские Textbox (цель):
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
}
Можете ли вы разместить код? Это облегчит понимание вашей проблемы. Как именно вы поднимаете событие PropertyChanged в своем DataContext? – wpfwannabe
Он должен обновляться, даже если источник тот же. Отправьте свой код, решение должно быть легко обнаружить. –
Я разместил код. Приложение слишком сложное, чтобы включить сюда весь источник. Имена были заменены. –