选择带有复选框的列表视图行

问题描述 投票:0回答:1

我正在将一个api调用到WPF listView中。我向每一行添加了一个CheckBox,并尝试选择CheckBox的一行,然后显示该值。

我的xaml文件:

            <ListView x:Name="myListView"  
                      SelectedValue="{Binding title}" 
                      Height="550" Margin="35,149,-202.2,0" 
                      VerticalAlignment="Top"
                      Background="AntiqueWhite" Grid.ColumnSpan="2"                   
                      SelectionChanged="MyListView_SelectionChanged">
                <ListView.ItemTemplate>                
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" >
                            <CheckBox 
                                Name="myCheckBox"
                                Click="listView_Click"
                                IsChecked="{Binding IsChecked}" 
                                Margin="5, 0"/>
                            <TextBlock Text=" " />
                            <TextBlock Text="{Binding title}" />
                            <TextBlock Text=", " />
                            <TextBlock Text="{Binding publisher}" />
                            <TextBlock Text=", " />
                            <TextBlock Text="{Binding price}" />
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>            
            </ListView> 

以及我的listView_Click方法,以及我尝试过的方法和所产生的输出

    private void listView_Click(object sender, RoutedEventArgs e)
    {
        //Selected_label.Text = myListView.ItemsSource.ToString();
        //Output = System.Collections.Generic.List`1[ShortBoxedUI.ShortBoxed+Comics]

        //Selected_label.Text = myListView.Items.ToString();
        //Output = System.Windows.Controls.ItemCollection

        //Selected_label.Text = myListView.ToString();
        //Output = System.Windows.Controls.ListView Items.Count:352                
     } 

我检查了过去的问题/答案,但没有发现与我想做的事情相符的事情。

c# wpf api data-binding
1个回答
0
投票

默认情况下,DataTemplate中的ListView.ItemTemplate将绑定到ItemsSource中的数据项。如果要绑定到ListViewItem本身(包含DataTemplate),可以使用RelativeSource

RelativeSource

获得当前选定项目的正确属性是... IsChecked="{Binding IsChecked, RelativeSource={RelativeSource AncestorType=ListViewItem}}" ... ,并且当选定项目发生更改时执行操作的正确事件是SelectedItem

SelectedItem

不过,很常见,您将绑定到SelectionChanged而不是直接处理SelectionChanged

© www.soinside.com 2019 - 2024. All rights reserved.