template example wpf data-binding listboxitem selected

example - wpf listview binding



Vincular la propiedad IsSelected de ListBoxItem a una propiedad en el objeto desde su origen (2)

Estaba buscando una solución en código, así que aquí está la traducción de eso.

System.Windows.Controls.ListBox innerListBox = new System.Windows.Controls.ListBox(); //The source is a collection of my item objects. innerListBox.ItemsSource = this.Manager.ItemManagers; //Create a binding that we will add to a setter System.Windows.Data.Binding binding = new System.Windows.Data.Binding(); //The path to the property on your object binding.Path = new System.Windows.PropertyPath("Selected"); //I was in need of two way binding binding.Mode = System.Windows.Data.BindingMode.TwoWay; //Create a setter that we will add to a style System.Windows.Setter setter = new System.Windows.Setter(); //The IsSelected DP is the property of interest on the ListBoxItem setter.Property = System.Windows.Controls.ListBoxItem.IsSelectedProperty; setter.Value = binding; //Create a style System.Windows.Style style = new System.Windows.Style(); style.TargetType = typeof(System.Windows.Controls.ListBoxItem); style.Setters.Add(setter); //Overwrite the current ItemContainerStyle of the ListBox with the new style innerListBox.ItemContainerStyle = style;

Tengo un control ListBox WPF y estoy configurando su ItemsSource para una colección de objetos de elementos. ¿Cómo puedo vincular la propiedad IsSelected del objeto ListBoxItem a una propiedad Selected de un objeto del elemento correspondiente sin tener una instancia del objeto para establecer como un Binding.Source ?


Sólo anula ItemContainerStyle:

<ListBox ItemsSource="..."> <ListBox.ItemContainerStyle> <Style TargetType="{x:Type ListBoxItem}"> <Setter Property="IsSelected" Value="{Binding Selected}"/> </Style> </ListBox.ItemContainerStyle> </ListBox>

Oh, por cierto, creo que te gustaría este maravilloso artículo de dr.WPF: ItemsControl: de la A a la Z.

Espero que esto ayude.