У меня есть элемент управления ListBox в WPF, который содержит элементы переменной высоты (преимущественно большой текстовый блок, поэтому на него также влияет перенос слов). Поскольку прокрутка ведет себя плохо, когда высота отдельного элемента становится слишком высокой (особенно когда она близка к высоте самого ListBox), я хочу ограничить максимальную высоту отдельных элементов.
Я сделал это достаточно легко, используя Стиль для установки MaxHeight контейнера ListBoxItem.
Моя проблема в том, что я хотел бы обнаружить, что отдельный элемент достиг этого ограничения, а затем изменить его стиль.
Это была моя первая попытка:
<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>
Но я не уверен, как написать триггер. Альтернативы приветствуются.