多个Listviews只有一个SelectedItem

Sam*_*vdd 4 .net c# wpf xaml listview

我有多个Listviews,每个Listviews都绑定了自己的itemsource.但我只有1个选定项目.

所以例如我有5个列表框,(Monday, Tuesday, ...)每个列表框都有自己的itemssource (MondayList, TuesdayList, ...).这些Listviews SelectedItem属性中的每一个都绑定到属性'CurrentToDo'.

问题是,如果我在星期一选择一个,然后在星期二选择一个,他们都被选中.

因此,在所有列表视图中只能选择一个项目,请帮忙.

<UserControl.Resources>        
    <Style x:Key="ListViewItemStyleToDo" TargetType="{x:Type ListViewItem}">
        <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
    </Style>

    <GridView x:Key="ViewBase1" x:Shared="False" >
        <GridViewColumn Header="" Width="30">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}" />
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
        <GridViewColumn Header="Subject" Width="auto" DisplayMemberBinding="{Binding Subject}" />
    </GridView>
</UserControl.Resources>

<ListView Grid.Row="1"  ItemsSource="{Binding MondayList}" SelectedItem="{Binding CurrentToDo, Mode=TwoWay}" SelectionMode="Single" ItemContainerStyle="{DynamicResource ListViewItemStyleToDo}" View="{DynamicResource ViewBase1}" />

<ListView Grid.Row="3"  ItemsSource="{Binding TuesdayList}" SelectedItem="{Binding CurrentToDo,Mode=TwoWay}" SelectionMode="Single" ItemContainerStyle="{DynamicResource ListViewItemStyleToDo}" View="{DynamicResource ViewBase1}"  />
Run Code Online (Sandbox Code Playgroud)

属性:

    private ToDoMod _currentToDo;

    public ToDoMod CurrentToDo
    {
        get { return _currentToDo; }
        set
        {
            _currentToDo= value;
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs("CurrentToDo"));
        }
    }
Run Code Online (Sandbox Code Playgroud)

Sam*_*vdd 6

这是答案:

只需绑定到SelectedValue而不是SelectedItem.