gpt4 book ai didi

c# - 如何在 WPF 中使用 Flyout?

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:40 26 4
gpt4 key购买 nike

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

enter image description here

<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;
}
}

毕竟还是不行..

最佳答案

您需要添加绑定(bind)到 bool 属性的 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;
}
}

关于c# - 如何在 WPF 中使用 Flyout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33346753/

26 4 0
文章推荐: html - 为什么我的

文章推荐: c - union - 二进制到双
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com