如何从WPF中的ListBox获取SelectedItem值

时间:2017-01-04 23:05:37

标签: wpf vb.net xaml

我在ListBox控件中使用网格来显示带有各自ID的图像。

ID字段绑定到网格列1.我想使用ListBox的SelectionChanged事件来选择ID值(即网格列1值)。我怎么能这样做?

以下是我的XAML的代码片段:

var productIds = ["productid1","productid2" ]; // <- Add your product Ids here

2 个答案:

答案 0 :(得分:0)

根据我对您的要求的理解,您需要使用&#39; SelectedItem&#39; Listbox的属性将其选定的项绑定到代码隐藏/视图模型中的属性。 viewmodel中的SelectedItem属性将具有您需要的所需ID属性。与使用选择更改事件相比,此方法会更好。

例如:

<ListBox x:Name="ListBox2" **SelectedItem ={Binding SelectedImage}**  Grid.ColumnSpan="1" Grid.Column="4" Grid.Row="5" ItemsSource="{Binding Source= ListToLoad}" Grid.IsSharedSizeScope="True">

您必须在ViewModel / Class代码中具有SelectedImage属性:

private <Image/type of property> _selectedImage;

public <Image/type of property> SelectedImage
{
get { return _selectedImage;}
set
_selectedImage = value;

if(value != null)
{
  <imageId> = value.ImageId;
}

}

然后,当您在列表框中选择一个项目时,将触发SelectedImage的setter,您将获得所选图像。然后你可以在setter方法中从SelectedImage获取ImageId。

答案 1 :(得分:0)

将所选项目转换为有界数据类型,然后从转换后的对象中获取Id。

public partial class MainWindow:Window
    {
        public MainWindow()
        {
            InitializeComponent ();

            ObservableCollection<Product> products=new ObservableCollection<Product> ();
            Product p=new Product { ProductId=1,Name="Suger" };
            products.Add (p);
            p=new Product { ProductId=2,Name="Bread" };
            products.Add (p);
            p=new Product { ProductId=3,Name="Rice" };
            products.Add (p);

            lstProducts.ItemsSource=products;
        }

        private void lstProducts_SelectionChanged(object sender,SelectionChangedEventArgs e)
        {
            Product p=(Product)lstProducts.SelectedItem;
            MessageBox.Show (p.ProductId.ToString ());
        }

        public class Product
        {
            public int ProductId { get; set; }
            public string Name { get; set; }
        }
    }