wpf, как сказать, когда привязка данных закончилась?

У меня есть пользовательский элемент управления, который имеет DependencyProperty MyAnimal - я связываю Свойство Животных на своем ViewModel к MyAnimal DependencyProperty.

Я прикрепил TextBox на Управление, таким образом, я могу инициировать Событие - каждый раз, когда я инициировал событие, свойство MyAnimal было установлено - однако, если я поместил точку останова на Метод set свойства MyAnimal, это никогда не запускается!

Я предполагаю, что пропускаю что-то фундаментальное о Свойствах/Привязке Зависимости WPF?!

И таким образом, мой вопрос, если я не могу использовать Метод set, как я могу узнать, когда его установил? Если я поместил, если я поместил точку останова после InitializeComponent () его пустой указатель, и я взглянул, чтобы видеть, существует ли Событие рычаг банки до - DatabindingFinished или подобный? но не видьте, каково это было бы...

Кто-либо может помочь?

Спасибо,

Andy

public partial class ControlStrip
{
    public ControlStrip()
    {
        InitializeComponent();
    }

    public Animal MyAnimal
    {
        get
        {
            return (Animal)GetValue(MyAnimalProperty);
        }
        set
        {
            SetValue(MyAnimalProperty, value);
        }
    }

    public static readonly DependencyProperty MyAnimalProperty =
        DependencyProperty.RegisterAttached("MyAnimal", typeof (Animal), typeof (ControlStrip));

    private void TextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
    {
        var myAnimal = MyAnimal;
        MessageBox.Show(myAnimal.Name);
    }

}
5
задан Andy Clarke 21 December 2009 в 18:23
поделиться

2 ответа

Методы установки никогда не вызываются средой выполнения. Они переходят прямо в DependencyProperty. Вам нужно будет добавить дополнительный аргумент к вашему вызову RegisterAttached (). Там вы можете добавить PropertyChangedCallback.

Вот пример кода:

 public static readonly DependencyProperty MyAnimalProperty =
     DependencyProperty.RegisterAttached("MyAnimal", typeof (Animal), typeof (ControlStrip), new PropertyMetadata(AnimalChanged));

 private static void AnimalChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
 {
   // Do work here
 }
5
ответ дан 14 December 2019 в 01:09
поделиться

Сеттер предназначен только для вашего использования - вы фактически можете полностью отключить свойство, поскольку DataBinding использует собственно DependencyProperty, а не свойство CLR.

Если вам нужно узнать, когда Если свойство изменяется, вам необходимо указать PropertyMetadata в свойстве зависимости и предоставить PropertyChangedCallback .

Для получения подробной информации я рекомендую прочитать Метаданные свойства зависимости .

4
ответ дан 14 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: