0

我正在尝试创建一个 WPF 窗口,以便在用户单击更多扩展器按钮时有一个简单的扩展器来扩展数据网格。当用户想要隐藏数据网格时,用户只需点击 Less 扩展器按钮。

我还使用停靠面板来分隔页眉、左、右和页脚。

问题是:

  1. 在用户单击更多扩展器按钮之前,我希望让更少的按钮位于中心。当用户点击更多扩展按钮时,更少按钮将被推到左侧,以在右侧显示数据网格。
  2. 如何在扩展器关闭和打开时更改扩展器的名称。我可以在 xaml 级别进行吗?

下面是xaml代码:

<Window x:Class="M.SalesWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="SalesWindow" Height="300" Width="300">
    <DockPanel>

        <StackPanel DockPanel.Dock="Top">
            <Label FontSize="28" Content="Sales">
            </Label>
        </StackPanel>

        <StackPanel DockPanel.Dock="Left" Width="auto" HorizontalAlignment="Center">
            <Label FontSize="15" Content="Enter Amount" Height="26" Width="168" />
            <Separator Width="168" />
        </StackPanel>

        <StackPanel DockPanel.Dock="Right">
            <Expander ExpandDirection="Left" HorizontalAlignment="Right" VerticalAlignment="Stretch">
                <Expander.Header>
                    <TextBlock Text="More">
                    <TextBlock.LayoutTransform>
                        <RotateTransform Angle="-90"/>
                    </TextBlock.LayoutTransform>
                    </TextBlock>
                </Expander.Header>
                <Expander.Content>
                    <StackPanel>
                        <DataGrid ItemsSource="{Binding Products}">

                        </DataGrid>
                    </StackPanel>
                </Expander.Content>
            </Expander>
        </StackPanel>

    </DockPanel>
</Window>

谢谢你。

4

1 回答 1

1

用下面的代码替换你的代码,看看它的神奇之处。这也将根据您的要求解决您的对齐问题。我已经删除了 DockPanel,因为您可以使用这段代码获得类似的结果。

<StackPanel>
    <StackPanel>
        <Label FontSize="28" Content="Sales">
        </Label>
    </StackPanel>

    <Grid>
        <Grid.ColumnDefinitions>                
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Column="0" HorizontalAlignment="Center">
            <Label FontSize="15" Content="Enter Amount" Height="26" Width="168" />
            <Separator Width="168" />
        </StackPanel>

         <Expander Grid.Column="1" ExpandDirection="Left" HorizontalAlignment="Right" VerticalAlignment="Stretch">
            <Expander.Style>
                <Style TargetType="Expander">
                    <Setter Property="IsExpanded" Value="False" />
                    <Setter Property="Header">
                        <Setter.Value>
                            <TextBlock Text="Less">
                                <TextBlock.LayoutTransform>
                                    <RotateTransform Angle="-90"/>
                                </TextBlock.LayoutTransform>
                            </TextBlock>
                        </Setter.Value>
                    </Setter>

                    <Style.Triggers>
                        <DataTrigger Binding="{Binding IsExpanded,RelativeSource={RelativeSource Self}}" Value="True">
                            <Setter Property="Header">
                                <Setter.Value>
                                    <TextBlock Text="More">
                                        <TextBlock.LayoutTransform>
                                            <RotateTransform Angle="-90"/>
                                        </TextBlock.LayoutTransform>
                                    </TextBlock>
                                </Setter.Value>
                            </Setter>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Expander.Style>
            <Expander.Content>
                <StackPanel>
                    <DataGrid ItemsSource="{Binding Products}">

                    </DataGrid>
                </StackPanel>
            </Expander.Content>
        </Expander>

    </Grid>
</StackPanel>

诀窍在于以下代码行。

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
于 2012-09-26T02:22:39.187 回答