WPF组合框选择已更改且DropDownClosed事件不起作用
我试图通过将该方法链接到WPF中Combobox的Selection changed事件和DropDownClosed事件来调用该方法,但当我更改Combobox中的项时,它并没有调用它假定调用的函数(在我的例子中是onmyComboxChanged1和onmyComboxChanged2) MainWindow.xaml.csWPF组合框选择已更改且DropDownClosed事件不起作用,wpf,events,combobox,selectionchanged,Wpf,Events,Combobox,Selectionchanged,我试图通过将该方法链接到WPF中Combobox的Selection changed事件和DropDownClosed事件来调用该方法,但当我更改Combobox中的项时,它并没有调用它假定调用的函数(在我的例子中是onmyComboxChanged1和onmyComboxChanged2) MainWindow.xaml.cs 公共部分类主窗口:窗口 { 人员{get;set;}的公共列表名称 公共字符串SelectedComboxItem{get;set;} 公共主窗口() { 初始化组件
公共部分类主窗口:窗口
{
人员{get;set;}的公共列表名称
公共字符串SelectedComboxItem{get;set;}
公共主窗口()
{
初始化组件();
NameOfPerson=新列表();
人员姓名。添加(“Ram”);
人员姓名。添加(“Sita”);
人员姓名。添加(“哈里”);
人员姓名。添加(“库马尔”);
姓名。添加(“Jay”);
人员姓名。添加(“比卡什”);
MyComboBox.ItemsSource=人员姓名;
this.MyComboBox.SelectionChanged+=新的SelectionChangedEventHandler(onmycomboxChanged1);
this.MyComboBox.DropDownClosed+=new System.EventHandler(onmycomboxchanged2);
}
MyComboxChanged1上的私有无效(对象发送方,选择ChangedEventArgs e)
{
SelectedComboxItem=this.MyComboBox.Text;
}
私有void onmycomboxchanged2(对象发送方,System.EventArgs e)
{
SelectedComboxItem=this.MyComboBox.Text;
}
}
我已经尝试过了,并且调用了这些方法。问题可能是您使用了错误的属性来检索所选项目。请尝试以下方法:
SelectedComboBoxItem = this.MyComboBox.SelectedItem as string;
我已经试过了,方法被调用了。问题可能是您使用了错误的属性来检索所选项目。请尝试以下方法:
SelectedComboBoxItem = this.MyComboBox.SelectedItem as string;
标签的内容不会更新,因为没有任何东西告诉它要更新-标准C#属性没有自动通知 您需要为SelectedComboxItem属性实现,或者更好地切换到设计模式 另一种方法是使用直接数据绑定
<Label Content="{Binding ElementName="MyComboBox", Path=SelectedItem}" />
标签的内容不会更新,因为没有任何东西告诉它要更新-标准C#属性没有自动通知 您需要为SelectedComboxItem属性实现,或者更好地切换到设计模式 另一种方法是使用直接数据绑定
<Label Content="{Binding ElementName="MyComboBox", Path=SelectedItem}" />
你需要做两件事
你需要做两件事
下面是答案和工作代码,以防有人需要它 MainWindow.xaml.cs
使用System.ComponentModel;
使用System.Windows;
使用System.Collections.Generic;
使用System.Windows.Controls;
使用系统诊断;
名称空间组合框
{
公共部分类主窗口:窗口,INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
人员{get;set;}的公共列表名称
私有字符串\u selectedComboxItem;
公共字符串SelectedComboxItem
{
得到
{
返回_selectedComboxItem;
}
设置
{
如果(_selectedComboxItem==值)
返回;
_SelectedComboxItem=值;
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(名称)(SelectedComboxItem));
}
}
公共主窗口()
{
初始化组件();
this.DataContext=this;
NameOfPerson=新列表();
人员姓名。添加(“Ram”);
人员姓名。添加(“Sita”);
人员姓名。添加(“哈里”);
人员姓名。添加(“库马尔”);
姓名。添加(“Jay”);
人员姓名。添加(“比卡什”);
MyComboBox.ItemsSource=人员姓名;
this.MyComboBox.SelectionChanged+=onmycomboxchanged1;
this.MyComboBox.DropDownClosed+=onmycomboxchanged2;
}
MyComboxChanged1上的私有无效(对象发送方,选择ChangedEventArgs e)
{
SelectedComboxItem=this.myComboxBox.SelectedItem作为字符串;
}
私有void onmycomboxchanged2(对象发送方,System.EventArgs e)
{
SelectedComboxItem=this.MyComboBox.Text;
Debugger.Break();
}
}
}
下面是答案和工作代码,以防有人需要
MainWindow.xaml.cs
使用System.ComponentModel;
使用System.Windows;
使用System.Collections.Generic;
使用System.Windows.Controls;
使用系统诊断;
名称空间组合框
{
公共部分类主窗口:窗口,INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
人员{get;set;}的公共列表名称
私有字符串\u selectedComboxItem;
公共字符串SelectedComboxItem
{
得到
{
返回_selectedComboxItem;
}
设置
{
如果(_selectedComboxItem==值)
返回;
_SelectedComboxItem=值;
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(名称)(SelectedComboxItem));
}
}
公共主窗口()
{
初始化组件();
this.DataContext=this;
NameOfPerson=新列表();
人员姓名。添加(“Ram”);
人员姓名。添加(“Sita”);
人员姓名。添加(“H