【问题标题】:Expand and Collapse a WPF Expander展开和折叠 WPF 扩展器
【发布时间】:2015-03-29 13:48:43
【问题描述】:

我在 DockPanel 控件中有两个 Expander,顶部的第一个 Expander 设置为 isExpanded true,而另一个 Expander 没有。

只要第一个 Expander 在运行时设置为 isExpanded false,我只想让第二个 Expander 上升...

这是我的 XAML 代码:

<DockPanel LastChildFill="False" Margin="0,26,0,0" Background="#FF552D2D" HorizontalAlignment="Left" Width="149">
        <StackPanel ScrollViewer.VerticalScrollBarVisibility="Auto">
            <Expander x:Name="AdminManage" Header="Manage" Margin="0" Foreground="#FF14D0EE" Height="198" IsExpanded="True" Collapsed="AdminManage_Collapsed" Width="544">
                <StackPanel x:Name="AdminStackPanel" Height="177" Margin="0,0,-2,0">
                    <Button Content="" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" Margin="23,0,0,0" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                    <Button Content="" Margin="23,0,0,0" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                    <Button Content="" Margin="23,0,0,0" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                    <Button Content="" Margin="23,0,0,0" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                    <Button Content="" Margin="23,0,0,0" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                    <Button Content="" Margin="23,0,0,0" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                    <Button Content="" Margin="23,0,0,0" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                    <Button Content="" Margin="23,0,0,0" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                </StackPanel>
            </Expander>
            <Expander Header="Account" Margin="0" VerticalAlignment="Top" Foreground="#FF14D0EE" Height="66">
                <StackPanel Height="44" Margin="0,0,-2,0">
                    <Button Content="" Margin="23,0,0,0" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                    <Button Content="" Margin="23,0,0,0" Background="#FF552D2D" BorderBrush="{x:Null}" BorderThickness="0" Opacity="0.5" Foreground="White" VerticalAlignment="Center" HorizontalContentAlignment="Left" HorizontalAlignment="Left" Width="124"/>
                </StackPanel>
            </Expander>
        </StackPanel>
    </DockPanel>

【问题讨论】:

  • 当第一个扩展器处于运行时 isExpanded = false 时,我似乎无法使第二个扩展器低于第一个扩展器
  • 对于第二个扩展器,您说“上”然后“下”。请用通用术语(移动、扩展)进行澄清。

标签: c# wpf expander


【解决方案1】:

下面的意思是扩展扩展器吗?
如果是这样,您可以像下面那样进行元素绑定。您还需要一个转换器来反转第一个扩展器的布尔值。

            <Expander Header="Account" Margin="0" VerticalAlignment="Top" Foreground="#FF14D0EE" Height="66" 
IsExpanded="{Binding IsExpanded, ElementName=AdminManage, Converter={StaticResource InvertBooleanConverter}"
                <StackPanel Height="44" Margin="0,0,-2,0">
                 <!-- your content here -->
                </StackPanel>
            </Expander>

否则,如果您打算交换它们的位置,则需要在 Grid 中添加扩展器而不是 StackPanel,并在 IsExpanded 更改时更改扩展器的附加 Grid.Row 属性

【讨论】:

    【解决方案2】:

    从 AdminManage Expander 中删除您的 Height 属性,我测试它会按预期工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 2019-06-14
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 2018-12-13
      相关资源
      最近更新 更多