Обновление элемента управления WindowsFormsHost из обратного вызова DP WPF

У меня есть оболочка пользовательского управления вокруг DataGridView в WindowsFormsHost.

У оболочки есть DP с обратным вызовом, но обратный вызов является статическим, поэтому он не может просто выполнить код в размещенном элементе управления windowsforms, который имеет x:Name.

Как я могу обновить WindowsFormsHost DataGridView при обновлении DP?

Я хочу сделать что-то подобное, но не могу ссылаться на _gridView в обратном вызове DP.

 public LiteTable GridViewData
    {
        get { return (LiteTable)GetValue(GridViewDataProperty); }
        set { SetValue(GridViewDataProperty, value); }
    }

    private static void OnGridViewDataChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
    {
        _gridView.GetData((LiteTable)e.NewValue);
    }

    // Using a DependencyProperty as the backing store for GridViewData.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty GridViewDataProperty =
        DependencyProperty.Register("GridViewData", typeof(LiteTable), typeof(LiteGridViewWrapper), new UIPropertyMetadata(null, OnGridViewDataChanged));

person ChandlerPelhams    schedule 10.08.2011    source источник


Ответы (1)


WPF передает экземпляр, свойство которого изменилось в параметре source.
Вы можете привести этот параметр к своему типу и получить поле.

var me = (MyControl)source;
me._gridView.GetData((LiteTable)e.NewValue);
person SLaks    schedule 10.08.2011