Я определил событие в пользовательском элементе управления (Field
) с именем ValueChanged
.
public static event EventHandler<ValueChangedEventArgs> ValueChanged;
И свойством зависимости Value
.
public string Value
{
get => (string)GetValue(ValueProperty);
set => SetValue(ValueProperty, value);
}
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register(nameof(Value), typeof(string), typeof(Field),
new PropertyMetadata(OnValuePropertyChanged));
Iнужно запустить мое событие при изменении этого значения (если FireValueChanged
равно true
).
private static void OnValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
bool fire = (bool)d.GetValue(FireValueChangedProperty);
if (fire) ValueChanged?.Invoke(d, new ValueChangedEventArgs($"{e.NewValue}", $"{e.OldValue}"));
}
Это ValueChangedEventArgs
класс
public class ValueChangedEventArgs : EventArgs
{
public string NewValue { get; }
public string OldValue { get; }
//Other calculated properties...
public ValueChangedEventArgs(string newValue, string oldValue)
{
NewValue = newValue;
OldValue = oldValue;
}
}
Но в моем main window
он говорит, что
не может установить обработчик, потому что событие является статическим событием.
И когда я пытаюсь скомпилировать, он говорит, что
, свойство 'ValueChanged' не существует в пространстве имен XML 'clr-namespace: ...'.
Если я попытаюсь установить событие как нестатическое, я не смогу использовать его внутри статического OnValuePropertyChanged
метода.