C# 从列表框WPF.NET 3.5中选择的值
我的WPF应用程序中有一个列表框。定义如下: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" /> 在代码隐藏中,我将列表框绑定到一个列表。当从列表框中选择该值时,在我的代码隐藏中,我希
<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
事件的选择,因此我更新了上面的示例