Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF组合框选择已更改且DropDownClosed事件不起作用_Wpf_Events_Combobox_Selectionchanged - Fatal编程技术网

WPF组合框选择已更改且DropDownClosed事件不起作用

WPF组合框选择已更改且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;} 公共主窗口() { 初始化组件

我试图通过将该方法链接到WPF中Combobox的Selection changed事件和DropDownClosed事件来调用该方法,但当我更改Combobox中的项时,它并没有调用它假定调用的函数(在我的例子中是onmyComboxChanged1和onmyComboxChanged2)

MainWindow.xaml.cs

公共部分类主窗口:窗口
{
人员{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}" />

你需要做两件事

  • 您应该使用属性SelectedComboxItem的支持字段实现接口

  • 您需要像这样为类设置DataContext

    this.DataContext=this


  • 你需要做两件事

  • 您应该使用属性SelectedComboxItem的支持字段实现接口

  • 您需要像这样为类设置DataContext

    this.DataContext=this


  • 下面是答案和工作代码,以防有人需要它

    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