【问题标题】:WPF how to make a navigation controlWPF如何制作导航控件
【发布时间】:2010-11-25 05:47:05
【问题描述】:

作为 WPF 新手,这对我来说是一个复杂的问题。我想要的是底部大约的“面板”。高度为 50 像素。在那个面板上我想要例如3 个图像按钮(任意数量)以条形为中心。当我将每个按钮悬停时,它们的大小应该会增加例如10 px 所以看起来很酷。最重要的是,如何制作bar和buttons,其次如何制作悬停效果?

【问题讨论】:

    标签: wpf navigation hover


    【解决方案1】:

    使用 DockPanel 固定底部的“栏”,使用网格来获取间距和触发器来控制增长。

    这里有一些代码可以尝试。使用 DockPanel,您可以先将要停靠的东西放入其中,然后不需要停靠剩下的任何东西,并使用 LastChildFill 填充剩余空间。

    我喜欢网格布局。我在列上使用了“*”宽度:它们表示 HTML 中的“剩余空间”。如果使用 > 1,WPF 会平均分配剩余空间。所以你会得到居中、间隔的按钮。

    而且我使用了样式触发器来实现增长。这些值是相对的,而不是绝对的,因此中心为 0.5(即在按钮的中间/向下),比例为 1.1。因为我不知道你的按钮的大小,我不能给你比例因子,但如果你想要 10px(而不是我给出的 10%),把你的计算器拿出来做((宽度+ 10)/width) 作为宽度比例因子,同样适用于高度。

    <Grid>
        <Grid.Resources>
            <Style TargetType="{x:Type Button}">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="RenderTransformOrigin" Value=".5,.5" />
                        <Setter Property="RenderTransform">
                            <Setter.Value>
                                <ScaleTransform ScaleX="1.1" ScaleY="1.1" />
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Grid.Resources>
    
        <DockPanel LastChildFill="True">
    
            <Grid DockPanel.Dock="Bottom">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
    
                <Button Grid.Column="1" Margin="6"
                        Content="Button 1" />
                <Button Grid.Column="2" Margin="6"
                        Content="Button 2" />
                <Button Grid.Column="3" Margin="6"
                        Content="Button 3" />
            </Grid>
    
            <Grid>
                <Label>Hello</Label>
            </Grid>
        </DockPanel>
    </Grid>
    

    【讨论】:

    • 谢谢你,你救了我的一天
    • 就像最好的问题一样,我自己也学到了一些东西。我知道这是可能的,但我从来没有真正做过按钮的事情——这不适合我的应用程序——但做起来很有趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多