簡體   English   中英

選擇帶有復選框的列表視圖行

[英]Selecting a listview row with a checkbox

我將 api 稱為 WPF listView。 我在每一行中添加了一個CheckBox並嘗試在 select 一行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方法,以及我嘗試過的方法以及它產生的 output

    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                
     } 

我檢查了過去的問題/答案,沒有發現任何與我正在嘗試做的事情一致的事情。

默認情況下, ListView.ItemTemplate中的DataTemplate將綁定到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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM