【问题标题】:Seleceted Value from a ListBox WPF .NET 3.5从列表框 WPF .NET 3.5 中选择的值
【发布时间】:2013-09-12 22:55:33
【问题描述】:

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

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

在后面的代码中,我将 ListBox 绑定到一个 List。从列表框中选择值时,在我后面的代码中,我希望能够检索该值。我该怎么做?示例 C# 代码将很有帮助。

谢谢。

【问题讨论】:

    标签: c# wpf .net-3.5 listbox


    【解决方案1】:

    你可以在你的代码后面绑定一个项目

    例子:

    <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));
            }
        }
    
    }
    

    【讨论】:

    • 我在后面修改了我的代码。但是 myselectedItem 仍然是空的。
    • 私有 ObservableCollection _myItems = new ObservableCollection(); public ObservableCollection MyItems { get { return _myItems; } 设置 { _myItems = 值; } }
    • 私有字符串 mySelectedItem;公共字符串 MySelectedItem { 获取 { 返回 mySelectedItem; } 设置 { mySelectedItem = 值; NotifyPropertyChanged("MySelectedItem"); } } 公共事件 PropertyChangedEventHandler PropertyChanged;私人无效NotifyPropertyChanged(字符串p){如果(PropertyChanged!= null){PropertyChanged(这个,新PropertyChangedEventArgs(p)); } }
    • private void ListBox_MouseDown(object sender, RoutedEventArgs e) { MessageBox.Show(mySelectedItem); }
    • 那是因为PreviewMouseLeftButtonDown事件拦截了ListBox的选择,改用SelectionChanged事件,我更新了上面的例子
    猜你喜欢
    • 2011-02-06
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多