我有一个奇怪的问题。
情况如下。我有一个ListView
,其中包含自定义的GroupStyle
,可以使数据显示在Expander
中,其中WrapPanel
包含StackPanels
(其中包含一个StackPanel
ToggleButton +一个自定义控件)
默认情况下,ToggleButton
中的自定义控件不可见,并且在选中ToggleButton
时变为可见。
但是,当我检查VerticalAlignment="Top"
时,会出现自定义控件,位于同一行的所有其他控件将移动到垂直中心。
理想情况下,我希望其他成员能够保持领先地位。我试图尽可能地设置ToggleButton
,无论如何都不会改变。
成像问题:
扩展器的初始状态:
点击DataTemplate
后,会发生以下情况:
如您所见,“测试分析”按钮移动到中心位置。我希望它与原版保持在同一个地方。
此外,我已在单独的<Expander.Content>
<WrapPanel Background="White" VerticalAlignment="Top">
<ItemsPresenter VerticalAlignment="Top"/>
</WrapPanel>
</Expander.Content>
对象中定义了所有这些样式。
这里有一些轻量代码(我刚刚删除了这里的问题无用,不会让你阅读大量的XAML代码:)):
扩展器的内容属性:
ItemsPanel
列表的<ItemsPanelTemplate >
<WrapPanel
Width="{Binding (FrameworkElement.ActualWidth),
RelativeSource={RelativeSource
AncestorType=Expander}}"
ItemWidth="{Binding (ListView.View).ItemWidth,
RelativeSource={RelativeSource AncestorType=ListView}}"
ItemHeight="{Binding (ListView.View).ItemHeight,
RelativeSource={RelativeSource AncestorType=ListView}}" />
</ItemsPanelTemplate>
:
ItemsTemplate
列表的<StackPanel Orientation="Vertical" Height="Auto" Width="Auto" VerticalAlignment="Top" >
<ToggleButton BorderBrush="{x:Null}" Background="{x:Null}" IsChecked="{Binding Value.IsToLaunch, Mode=TwoWay}"
Command="{Binding DataContext.UpdateGroupCheckingsCommand,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}}}">
<Grid Background="Transparent">
<!-- Blah blah blah about the ToggleButton's content -->
</Grid>
</ToggleButton>
<my:UcReleaseChooser>
<!-- Blah blah blah about being visible if ToggleButton is Checked -->
</my:UcReleaseChooser>
</StackPanel>
:
{{1}}
答案 0 :(得分:5)
尝试将verticalalignment属性设置为Top,或将listview的VerticalContentAlignment属性设置为Stretch
<Style TargetType="ListView">
<Setter Property="VerticalContentAlignment" Value="Top"/>
</Style>
或
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="VerticalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>