gpt4 book ai didi

wpf - 在 WPF 中的虚拟化列表框上正确设置宽度

转载 作者:行者123 更新时间:2023-12-03 17:08:32 25 4
gpt4 key购买 nike

我有一个用大量行虚拟化的 WPF 列表框。当我滚动浏览实体时,列表框的大小会发生变化。我试过了:

<Setter Property="MinWidth" Value="{Binding Path=ExtentWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ScrollViewer}}}" />

可悲的是,我没有足够的声誉来发布我的问题图片,但基本上当我滚动虚拟化列表框时,框的宽度会随着遇到较长的项目而变化。我想我可以尝试测量代码隐藏中最长的字符串并将宽度设置为该值,但我希望有一个更清洁的解决方案。

这是我当前的控制模板(没有骰子):
        <Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="ListItemContainer"
MinWidth="{Binding Path=ExtentWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ScrollViewer}}}"
BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<ContentPresenter></ContentPresenter>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" TargetName="ListItemContainer" Value="{DynamicResource AxisValueSelectedBackground}"/>
<Setter Property="Foreground" Value="{DynamicResource AxisValueSelectedForeground}"/>
</Trigger>

<Trigger Property="IsSelected" Value="false">
<Setter Property="Background" TargetName="ListItemContainer" Value="{DynamicResource AxisValueBackground}"/>
<Setter Property="Foreground" Value="{Binding IsEnabled, Converter={StaticResource AxisValueForegroundConverter}}" />
<Setter Property="FontStyle" Value="{Binding IsEnabled, Converter={StaticResource AxisValueFontStyleConverter}}" />
</Trigger>

<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsAxisSelected}" Value="True"/>
<Condition Binding="{Binding IsAxisValueSelected}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" TargetName="ListItemContainer" Value="White" />
</MultiDataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>

alt text
alt text

最佳答案

尝试相同的相对绑定(bind)技巧,但在 DataTemplate 的最外层项目(可能是网格)内。这样,所有元素的尺寸都相同。

关于wpf - 在 WPF 中的虚拟化列表框上正确设置宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4070655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com