我在ListBox控件中使用网格来显示带有各自ID的图像。
ID字段绑定到网格列1.我想使用ListBox的SelectionChanged事件来选择ID值(即网格列1值)。我怎么能这样做?
以下是我的XAML的代码片段:
var productIds = ["productid1","productid2" ]; // <- Add your product Ids here
答案 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; }
}
}