Wpf 从库中的控件引发事件

Wpf 从库中的控件引发事件,wpf,vb.net,wpf-controls,Wpf,Vb.net,Wpf Controls,我看到我要问的问题也有一些类似的问题,但我一直在通读它们,仍然不知道如何解决我的问题。我只使用WPF几个月了,所以如果我遗漏了一些明显的东西,请原谅我 我正在处理的应用程序中包含一个开源控件,它是一个自动完成的文本框,可在此处找到: 这个控件在vba中,我在C#中工作-我可以了解其中的内容,但这不是我擅长的语言 在该控件中,当AutoCompleteTextBox中的选定项发生更改时,会发生一个事件: Shared Sub OnSelectedItemChanged(ByVal d As Dep

我看到我要问的问题也有一些类似的问题,但我一直在通读它们,仍然不知道如何解决我的问题。我只使用WPF几个月了,所以如果我遗漏了一些明显的东西,请原谅我

我正在处理的应用程序中包含一个开源控件,它是一个自动完成的文本框,可在此处找到: 这个控件在vba中,我在C#中工作-我可以了解其中的内容,但这不是我擅长的语言

在该控件中,当AutoCompleteTextBox中的选定项发生更改时,会发生一个事件:

Shared Sub OnSelectedItemChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
    Dim act As AutoCompleteTextBox
    act = TryCast(d, AutoCompleteTextBox)
    If act IsNot Nothing Then
        If act.Editor IsNot Nothing And Not act._isUpdatingText Then
            act._isUpdatingText = True
            act.Editor.Text = act.BindingEvaluator.Evaluate(e.NewValue)
            act._isUpdatingText = False
        End If
    End If
End Sub
发生这种情况时,我希望在应用程序中调用传递对象
e
的事件,以允许对其进行处理。我目前正在调查这个问题。我走对了吗

如果是这样,那么如何在使用此控件的c#wpf应用程序的xaml/codebehind中“捕获”引发的事件


提前感谢。

SelectedItem
属性的值更改时,用户控件会在内部使用您正在查看的方法来执行某些操作,并且不会有太大用处(除非您修改源代码-您可以添加
事件
并从该方法中引发它)。“WPF方式”是使用数据绑定,但这假设您使用的是MVVM。只需将控件的SelectedItem属性绑定到视图模型上的属性,如下所示:-

<wpf:AutoCompleteTextBox SelectedItem="{Binding SelectedItem}" ...
现在,您可以将XAML控件属性绑定到代码隐藏类上的属性。确保代码隐藏类实现INotifyPropertyChanged接口(例如),然后添加将绑定控件SelectedItem属性的属性:-

public object SelectedItem
{
    get { return _selectedItem; }
    set
    {
        if (_selectedItem != value)
        {
            _selectedItem = value;
            OnPropertyChanged("SelectedItem");

            // Do whatever you need to, when the selected item changes
        }
    }
}

将其绑定到控件的SelectedItem属性(根据我之前的XAML代码片段),您就可以开始了。这为您提供了一种简单的方法来使用数据绑定,而无需使用成熟的MVVM应用程序。

啊,好的,我用错误的方式思考了这个问题。谢谢你的指点,现在更有意义了。现在,我已经能够使用MVVM实现这一点,下拉列表包含我的模型类,并且我能够通过DependencyProperty将其他控件绑定到所选模型的属性。好东西!
public object SelectedItem
{
    get { return _selectedItem; }
    set
    {
        if (_selectedItem != value)
        {
            _selectedItem = value;
            OnPropertyChanged("SelectedItem");

            // Do whatever you need to, when the selected item changes
        }
    }
}