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