Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
C# 从列表框WPF.NET 3.5中选择的值_C#_Wpf_.net 3.5_Listbox - Fatal编程技术网

C# 从列表框WPF.NET 3.5中选择的值

C# 从列表框WPF.NET 3.5中选择的值,c#,wpf,.net-3.5,listbox,C#,Wpf,.net 3.5,Listbox,我的WPF应用程序中有一个列表框。定义如下: <ListBox Margin="17.493,33.32,22.491,26.656" Name="lstData" PreviewMouseLeftButtonDown="ListBox_MouseDown" IsTextSearchEnabled="False" /> 在代码隐藏中,我将列表框绑定到一个列表。当从列表框中选择该值时,在我的代码隐藏中,我希

我的WPF应用程序中有一个列表框。定义如下:

<ListBox Margin="17.493,33.32,22.491,26.656" Name="lstData"   
                 PreviewMouseLeftButtonDown="ListBox_MouseDown"
                 IsTextSearchEnabled="False" />

在代码隐藏中,我将列表框绑定到一个列表。当从列表框中选择该值时,在我的代码隐藏中,我希望能够检索该值。我该怎么做?示例C#代码将非常有用


谢谢

您可以只绑定到代码隐藏中的项目

例如:

<ListBox Margin="17.493,33.32,22.491,26.656" Name="lstData"   
         SelectionChanged="ListBox_selectionChanged"
         IsTextSearchEnabled="False"
         ItemsSource="{Binding MyItems}"
         SelectedItem="{Binding MySelectedItem}"/>


public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {  
        InitializeComponent();
        DataContext = this;
    }

    private ObservableCollection<MyItemType> _myItems = new ObservableCollection<MyItemType>();
    public ObservableCollection<MyItemType> MyItems
    {
        get { return _myItems; }
        set { _myItems = value; }
    }

    private MyItemType _mySelectedItem;
    public MyItemType MySelectedItem
    {
        get { return _mySelectedItem; }
        set { _mySelectedItem = value; NotifyPropertyChanged("MySelectedItem"); }
    }

    private void ListBox_selectionChanged(object sender, SelectionChangedEventArgs e)
    {
        MessageBox.Show(_mySelectedItem);
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string p)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(p));
        }
    }

}

公共部分类主窗口:窗口,INotifyPropertyChanged
{
公共主窗口()
{  
初始化组件();
DataContext=this;
}
私有ObservableCollection_myItems=新ObservableCollection();
公共可观测集合MyItems
{
获取{return\u myItems;}
设置{u myItems=value;}
}
私有MyItemType_mySelectedItem;
公共MyItemType MySelectedItem
{
获取{return\u mySelectedItem;}
设置{u mySelectedItem=value;NotifyPropertyChanged(“mySelectedItem”);}
}
私有无效列表框\u selectionChanged(对象发送方,SelectionChangedEventArgs e)
{
MessageBox.Show(_mySelectedItem);
}
公共事件属性更改事件处理程序属性更改;
私有void NotifyPropertyChanged(字符串p)
{
if(PropertyChanged!=null)
{
房地产变更(这是新的房地产变更发展(p));
}
}
}

我修改了我的代码。但是myselectedItem仍然是空的。private observateCollection\u myItems=new observateCollection();公共ObservableCollection MyItems{get{return}MyItems;}set{MyItems=value;}}私有字符串mySelectedItem;公共字符串MySelectedItem{get{return MySelectedItem;}set{MySelectedItem=value;NotifyPropertyChanged(“MySelectedItem”);}}}公共事件PropertyChangedEventHandler PropertyChanged;私有void NotifyPropertyChanged(字符串p){if(PropertyChanged!=null){PropertyChanged(this,newpropertyChangedEventArgs(p));}}}私有void列表框_MouseDown(对象发送方,RoutedEventArgs e){MessageBox.Show(mySelectedItem);}这是因为
PreviewMouseLeftButtonDown
事件正在拦截对
ListBox
使用
SelectionChanged
事件的选择,因此我更新了上面的示例