2

我有一个带有 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 ("TableNames") 在 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;
    }
}

如何将 IsChecked 从 Checkbox 绑定到 Item.IsSelected 属性?

我的代码不起作用。

4

2 回答 2

7

尝试这个

<DataTemplate>    
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}" />
</DataTemplate>
于 2014-04-29T08:45:03.170 回答
4

消除RelativeSource

<CheckBox Content="{Binding}" IsChecked="{Binding IsSelected}" />

由于DataContextofListViewItem将被设置为Item您需要指定的所有实例的路径IsSelected

于 2014-04-29T08:41:35.433 回答