[英]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.