首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在WPF中使用弹出按钮?

如何在WPF中使用弹出按钮?
EN

Stack Overflow用户
提问于 2015-10-26 21:17:03
回答 1查看 9.2K关注 0票数 2

在我的WPF程序中,我使用库MahApps.Metro。有一个按钮,按下这个按钮后,我想显示Flyout控件。

<Button Height="40" Width="40" HorizontalAlignment="Right" Margin="0,5,5,0" 
        VerticalAlignment="Top" Style="{DynamicResource MetroCircleButtonStyle}" 
        BorderThickness="1"
        Grid.Column="1" Grid.RowSpan="2">

    <controls:FlyoutsControl>
        <controls:FlyoutsControl>
            <controls:Flyout x:Name="yourMahAppFlyout" Header="Flyout" Position="Right" Width="200">
                <TextBlock Text="Some text" />
            </controls:Flyout>
        </controls:FlyoutsControl>
    </controls:FlyoutsControl>
</Button>

但是当我按下按钮的时候什么反应也没有。我不明白,为什么?

编辑1:

XAML:

<Button x:Name="circleButtonSettings" Height="40" Width="40" HorizontalAlignment="Right" Margin="0,5,5,0" 
        VerticalAlignment="Top" Style="{DynamicResource MetroCircleButtonStyle}" 
        BorderThickness="1"
        Grid.Column="1" Grid.RowSpan="2" Click="circleButtonSettings_Click">

    <controls:FlyoutsControl>
        <controls:Flyout x:Name="yourMahAppFlyout" Header="Flyout" 
                Position="Right" Width="200"
                IsOpen="{Binding OpenFlyOut, Mode=TwoWay}">
            <TextBlock Text="Some text " />
        </controls:Flyout>
    </controls:FlyoutsControl>
</Button>

C#:

public struct OpenCloseFlyOut
{
    public OpenCloseFlyOut(bool _isFlyoutOpen)
    {
        IsFlyoutOpen = _isFlyoutOpen;
    }

    public bool IsFlyoutOpen { get; set; }
}

public partial class MainWindow : MetroWindow
{
    OpenCloseFlyOut obj = new OpenCloseFlyOut(true);

    // I call this method when press the button
    private void ChangeFlyoutState()
    {
        obj.IsFlyoutOpen = !obj.IsFlyoutOpen;
    }
}

毕竟它还是不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-26 21:42:29

您需要添加绑定到布尔属性的IsOpen属性。

<controls:FlyoutsControl>
    <controls:FlyoutsControl>
        <controls:Flyout x:Name="yourMahAppFlyout" 
                Header="Flyout" Position="Right" Width="200"
                IsOpen="{Binding OpenFlyOut, Mode=TwoWay}">
            <TextBlock Text="Some text" />
        </controls:Flyout>
    </controls:FlyoutsControl>
</controls:FlyoutsControl>

下面是一个示例,说明它是如何使用上面的示例中的代码隐藏来工作的。

<Button x:Name="btnOpen" Content="open" Width="75" Click="btnOpen_Click" Height="20"/>
<Button x:Name="btnClose" Content="close" Width="75" Click="btnClose_Click" Height="20" Margin="221,125,221,175"/>
<Controls:FlyoutsControl>
    <Controls:Flyout x:Name="flyout">
        <TextBlock Text="Some Text"/>
    </Controls:Flyout>            
</Controls:FlyoutsControl>
public partial class MainWindow : MetroWindow
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void btnOpen_Click(object sender, RoutedEventArgs e)
    {
        flyout.IsOpen = true;
    }

    private void btnClose_Click(object sender, RoutedEventArgs e)
    {
        flyout.IsOpen = false;
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33346753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档