【发布时间】:2010-12-13 14:47:05
【问题描述】:
我希望我悬停在 ListBox 中的项目将其字体大小增加到 18,以便在用户浏览项目时获得一种“滚动效果”。我不知道该怎么做。我的列表框是这样的
<ListBox Name="ListBox" ItemsSource="{Binding MyList}" DisplayMemberPath="Property1">
谢谢
【问题讨论】:
我希望我悬停在 ListBox 中的项目将其字体大小增加到 18,以便在用户浏览项目时获得一种“滚动效果”。我不知道该怎么做。我的列表框是这样的
<ListBox Name="ListBox" ItemsSource="{Binding MyList}" DisplayMemberPath="Property1">
谢谢
【问题讨论】:
您应该能够使用触发器来执行此操作。像这样的
<ListBox Name="ListBox" ItemsSource="{Binding MyList}" DisplayMemberPath="Property1">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="TextBlock.FontSize" Value="18"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
【讨论】:
Meleak 的回答是如何按照您的要求去做。但是您会发现,当您更改其中一个成员的字体大小时,整个列表框都被布置了,这可能是非常不受欢迎的。您可以尝试应用缩放变换,而不是设置字体大小:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="2" ScaleY="2"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
由于这是RenderTransform(而不是LayoutTransform),它不会影响列表框的布局。还有其他问题(例如,您需要处理项目的背景,因为它们在大小翻倍时会重叠),但值得尝试。
【讨论】:
Border 和不透明的 Background。虽然这样做的好处是,当鼠标悬停在项目上时,您还可以执行诸如使 BorderThickness 非零之类的操作。如果你玩这个,你可以获得一些非常好的效果。