我有一个使用数据模板的列表框。我需要的是在选择项目后的一种方式我想缩小列表框本身,而不是内部的列表项。我已经在selector.selected和unselected上尝试了eventtrigger,但它不会触发。我也在datatemplate上放了一个datatrigger,但是我无法从这里访问列表框。有任何想法吗?项目选择收缩列表框
1
A
回答
1
这是一个稍微间接的解决方案,但是...您可以通过将DataTrigger放置在ListBox本身上并绑定到SelectedItems.Count来处理此问题。您需要将ListBox默认设置为其“较小”外观。然后,触发器将检查SelectedItems.Count是否为0,如果是,则必须使列表框大于。在下面的例子中,为了简单起见,我设置了ListBox.Background,但是你应该能够使它适应LayoutTransform,RenderTransform或者Width/Height,或者你用来“收缩”ListBox的任何东西:
<ListBox.Style>
<Style TargetType="ListBox">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItems.Count, RelativeSource={RelativeSource Self}}" Value="0">
<Setter Property="Background" Value="Orange" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
显然这将缩小(或者,在我简化的例子中,变白)整个列表框选择任何东西时。要使选定的ListBoxItem保持完整大小,请使用ListBox.ItemContainerStyle。在这种情况下,你可以在IsSelected上触发,并应用合适的setter来反转“收缩”转换 - 例如应用负值保证金或反向ScaleTransform。 (普通触发器将为此做。)
0
首先,正确的事件挂钩的就是SelectionChanged
不Selected
,其次,你可以在窗口级别使用Storyboard
:
的Storyboard
:
<Storyboard x:Key="Storyboard1">
<DoubleAnimationUsingKeyFrames
BeginTime="00:00:00"
Storyboard.TargetName="grid"
Storyboard.TargetProperty="(FrameworkElement.Height)">
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
窗口触发:
<Window.Triggers>
<EventTrigger RoutedEvent="Selector.SelectionChanged" SourceName="listBox">
<BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
</EventTrigger>
</Window.Triggers>
而且ListBox
(有一些装饰贴效果):
<Border
BorderThickness="2"
CornerRadius="3"
BorderBrush="#FF000000"
Padding="3"
VerticalAlignment="Top">
<Grid Height="200" x:Name="grid">
<ListBox x:Name="listBox" Height="200">
<ListBoxItem Content="ListBoxItem"/>
<ListBoxItem Content="ListBoxItem"/>
<ListBoxItem Content="ListBoxItem"/>
<ListBoxItem Content="ListBoxItem"/>
</ListBox>
</Grid>
</Border>
相关问题
- 1. 列表框未选择所选项目
- 2. 从列表框中选择项目XAML
- 3. C#列表框组选择的项目
- 4. 无法选择项目列表框:InvalidOperationException
- 5. C#列表框选择项目
- 6. WPF - 阻止列表框项目选择
- 7. 在列表框中选择项目
- 8. XLwings选择列表框上的项目
- 9. 列表框中选择所有项目
- 10. 列表框从usercontrol选择的项目
- 11. 已冻结选择列表框项目
- 12. 保留列表框项目选择
- 13. 从先前选择的列表框中选择列表框项目
- 14. 简单的列表项目多项选择不选择项目
- 15. Programatic列表框选择选择了错误的项目
- 16. 删除选择时选择的项目会从列表框中
- 17. jQuery的:选择和取消选择列表框的项目
- 18. 嵌套列表框:是否有可能在选择子列表框项目时恢复父列表框项目?
- 19. 选择下拉列表中的已选项目/选择列表
- 20. 如何添加列表项目选择器到列表框
- 21. 选择列表框项目转换成一个列表C#
- 22. ASP.NET MVC列表框不显示选择的列表项目
- 23. 选择复选框列表选中的项目
- 24. 缩短选择选项列表中的选定选项
- 25. 如何选择所有项目在选择所有菜单项时选择黑莓的列表框复选框
- 26. 缩短长选项在选择列表中选择
- 27. ASP.NET列表框选择的项目改变文本框文本
- 28. 从搜索框中自动选择列表框项目
- 29. 的DataBind列表框中选择的项目文本框
- 30. WPF选择列表框项目与自定义边框