SurfaceListBoxItem触发器被选择

时间:2018-09-05 07:49:34

标签: c# wpf xaml

美好的一天!

我有SurfaceListBox及其使用XAML设计的项目模板。我添加了一个IsSelected = true触发器,它可以正常工作,但是如果要再次选择相同的项目,我想取消选择它。如果选择了另一个项目,但无法取消选择同一项目,我可以做到。

<ControlTemplate.Triggers>
    <Trigger Property="IsSelected" Value="True">
        <Setter TargetName="SelectTxt" Property="Visibility" Value="Collapsed" />
        <Setter TargetName="DeselectTxt" Property="Visibility" Value="Visible" />
        <Setter TargetName="SelectionBorder" Property="Background" Value="#3ab175" />
        <Setter TargetName="CheckMark" Property="Visibility" Value="Visible" />
        <Setter TargetName="CheckBorder" Property="BorderBrush" Value="White" />
    </Trigger>
</ControlTemplate.Triggers>

我想在取消选择时恢复所有的setter属性。

1 个答案:

答案 0 :(得分:1)

您可以将CheckBox添加到ItemTemplate中以实现选择和取消选择。在此情况下,CheckBox的{​​{1}}属性绑定到您的Checked的{​​{1}}。因此,您现有的IsSelected将按原样工作。

ListViewItem

如果您不想看到Triggers,则可以使用<ListView.ItemTemplate> <DataTemplate> <CheckBox Content="{Binding}" Width="{Binding ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}" IsChecked="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}"/> </DataTemplate> </ListView.ItemTemplate> 获得相同的功能。喜欢,

CheckBox

注意:为ToggleButton<ListView.ItemTemplate> <DataTemplate> <ToggleButton Content="{Binding}" Width="{Binding ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}" IsChecked="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}"> <ToggleButton.Template> <ControlTemplate TargetType="ToggleButton"> <Border BorderThickness="0"> <ContentPresenter/> </Border> </ControlTemplate> </ToggleButton.Template> </ToggleButton> </DataTemplate> </ListView.ItemTemplate> 内容绑定使用适当的属性名称。