Выбор строки просмотра списка с помощью флажка - PullRequest
0 голосов
/ 03 мая 2020

Я вызываю 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                
     } 

Я проверил прошлые вопросы / ответы и не нашел ничего, что соответствовало бы тому, что я пытаюсь сделать.

1 Ответ

1 голос
/ 03 мая 2020

По умолчанию DataTemplate в ListView.ItemTemplate будет привязываться к элементу данных с ItemsSource. Если вы хотите привязать себя к ListViewItem (который содержит DataTemplate), вы можете использовать RelativeSource:

...
IsChecked="{Binding IsSelected,
            RelativeSource={RelativeSource AncestorType=ListViewItem}}"
...

Правильное свойство для получения текущего выбранный элемент - SelectedItem, в то время как SelectedValue будет использоваться только в сочетании с SelectedValuePath.

. Событие для выполнения каких-либо действий при изменении выбранного элемента - SelectionChanged.

private void listView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    MyDataObject selectedItem = myListView.SelectedItem;
    Selected_label.Text = selectedItem.SomeTextProperty;
}

Обычно, однако, вы бы связывались с SelectedItem, а не обрабатывали SelectionChanged напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...