[英]How to display a checked check box on the selected item of a ListView in uwp
[英]check checkbox when item selected in listview UWP
我正在編寫一個帶有列表視圖的 UWP 應用程序。 listviewitems 包含一個文本塊和一個復選框。 選擇 listviewitem 后,我希望復選框選中/取消選中。 我還想刪除“selected”動畫,其中 listviewitem 在被選中時變為藍色。
我找到了不同的解決方案,但它們似乎都依賴於觸發器的使用,Visual Studio 告訴我在 UWP 中不可用。
如果沒有 UWP 中的觸發器,我該如何解決這個問題?
我的列表視圖:
<ListView Name="ListViewItems" Grid.Row="2">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Margin" Value="0,0,0,1"></Setter>
<Setter Property="Background" Value="White"></Setter>
<Setter Property="Padding" Value="5"></Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Padding="5,0">
<CheckBox HorizontalAlignment="Right" VerticalAlignment="Center" Name="CheckBoxItem"></CheckBox>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Name="TextblockItem" Text="{Binding}"></TextBlock>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
選擇 listviewitem 后,我希望復選框選中/取消選中。
您可以直接將 IsChecked 屬性綁定到 CheckBox 到 ListViewItem IsSelected 屬性:
<CheckBox
HorizontalAlignment="Right"
Margin="10"
VerticalAlignment="Center"
IsChecked="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}}"
Name="CheckBoxItem">
</CheckBox>
每當 ListViewItem 的 IsSelected 屬性更改時,CheckBox 將被選中/取消選中。
我還想刪除“selected”動畫,其中 listviewitem 在被選中時變為藍色。
下面的代碼可以幫助您實現這一點,但是,它覆蓋了項目的模板,這意味着您必須編寫自己的模板。
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果ListView
的ItemSource
綁定到 ViewModel 上的集合,我建議您向集合的項目類添加一個 bool。
因此,例如,如果您要顯示 Persons,請將 bool IsSelected 字段添加到 Person 類。 然后,您可以使用此字段將其綁定到視圖中復選框的IsChecked
道具,唯一需要做的就是確保設置 Mode=TwoWay
剩下要做的最后一件事是切換這個 IsSelected 字段,您可以通過將 ListView 的 SelectedItem 綁定到 ViewModel 上的 Person 屬性來完成此操作,並且每次調用它時(屬性的設置器),切換給定的 IsSelected 字段。
要在ListView
某個項目被選中時覆蓋顏色的變化,您需要獲取 ListView 模板的副本並刪除選中狀態下的顏色設置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.