c# - ListViewItem con CheckBox IsChecked vinculante para ViewModel
wpf templatebinding (2)
Tengo un ListView con DataTemplate para mostrar para cada ListViewItem una casilla de verificación.
<ListView ItemsSource="{Binding TableNames}">
<ListView.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}" IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsSelected, Mode=TwoWay}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
El ItemsSource ("TableNames") se desclasifica en el ViewModel de la siguiente manera:
private ObservableCollection<Item> _TableNames = new ObservableCollection<Item>();
public ObservableCollection<Item> TableNames
{
get { return _TableNames; }
set
{
_TableNames = value;
OnPropertyChanged("TableNames");
}
}
public class Item
{
public bool IsSelected { get; set; }
public string Name { get; set; }
public override string ToString()
{
return this.Name;
}
}
¿Cómo puedo vincular el IsChecked de la casilla de verificación a la propiedad Item.IsSelected?
Mi código no funciona
Eliminar RelativeSource
<CheckBox Content="{Binding}" IsChecked="{Binding IsSelected}" />
Dado que DataContext
of ListViewItem
se configurará como instancia de Item
todo lo que necesita especificar es la ruta a IsSelected
Prueba esto
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}" />
</DataTemplate>