我有一个带有DataTemplate的ListView,用于为每个ListViewItem显示一个复选框。
<ListView ItemsSource="{Binding TableNames}">
<ListView.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}" IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsSelected, Mode=TwoWay}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ItemsSource(&#34; TableNames&#34;)在ViewModel中被解除,如下所示:
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;
}
}
如何将Checkbox中的IsChecked绑定到Item.IsSelected属性?
我的代码无效。
答案 0 :(得分:7)
试试这个
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}" />
</DataTemplate>
答案 1 :(得分:4)
删除RelativeSource
<CheckBox Content="{Binding}" IsChecked="{Binding IsSelected}" />
由于DataContext
的{{1}}将设置为ListViewItem
的实例,您需要指定的是Item
的路径