我在WPF中有一个ListBox控件,它包含可变高度的项(主要是一个大的文本块,所以它也受到自动换行的影响) . 由于当单个项目的高度过高时(特别是当接近ListBox本身的高度时)滚动表现很差,我想约束各个项目的最大高度 .
通过使用Style来设置ListBoxItem容器的MaxHeight,我已经足够了 .
我的问题是我想检测到一个单独的项目已经达到了这个约束,然后以不同的方式设置它 .
这是我的第一次尝试:
<Style x:Key="LogContainerStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="MaxHeight" Value="64" />
<EventSetter Event="MouseDoubleClick" Handler="LogEntry_MouseDoubleClick" />
</Style>
<DataTemplate x:Key="LogTemplate">
<Grid>
<TextBlock Text="{Binding Message}" />
<TextBlock x:Name="More" Text="(more)"
HorizontalAlignment="Right" VerticalAlignment="Bottom"
Foreground="DarkGray" Visibility="Collapsed" />
</Grid>
<DataTemplate.Triggers>
<Trigger ... height capped at MaxHeight? ...>
<Setter TargetName="More" Property="Visibility" Value="Visible" />
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
但我不知道如何编写触发器 . 备选方案欢迎 .
1 回答
请尝试下面的代码 . 我将ListBoxItem.MaxHeight设置为99.然后我在DataTemplate中添加了一个触发器,用于检查模板中根元素的ActualHeight(即下面的“bd”),如果它是99,我更改了BorderBrush . 希望这可以帮助 .