UWP Menuflyout以编程方式在运行时不会触发

时间:2018-03-21 12:50:34

标签: c# uwp-xaml

我有这个XAML

<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Left">
    <Button 
        x:Name="BtnTiempo"
        Content="&#xE121;"
        Style="{StaticResource AppBaseButton}"
        Padding="0"
        FontSize="17"
        Foreground="Red">
        <Button.ContextFlyout>
            <MenuFlyout x:Name="TiemposMnu">
                <MenuFlyout.Items>

                </MenuFlyout.Items>
            </MenuFlyout>
        </Button.ContextFlyout>
    </Button>
    <TextBlock Text="{Binding Tiempo.StrDescripcion,FallbackValue=?}" Grid.Column="1" TextAlignment="Right" Foreground="Red"/>
</StackPanel>

此代码填写 TiemposMnu

    #region Tiempos 
    public List<Tiempo> Tiempos
    {
        get { return (List<Tiempo>)GetValue(TiemposProperty); }
        set { SetValue(TiemposProperty, value); }
    }

    // Using a DependencyProperty as the backing store for Tiempos.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty TiemposProperty =
        DependencyProperty.Register("Tiempos", typeof(List<Tiempo>), typeof(ItemDetallePedidoControl), new PropertyMetadata(null,new PropertyChangedCallback(OnTiemposChanged)));

    private static void OnTiemposChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        if(d is ItemDetallePedidoControl p)
        {
            if (p.Tiempos != null)
            {
                foreach (var tiempo in p.Tiempos)
                {
                    MenuFlyoutItem item = new MenuFlyoutItem()
                    {
                        Text = tiempo.StrDescripcion
                    };
                    item.Click += (s, e1) =>
                    {
                        p.SeleccionarTiempo(tiempo.IntIdTiempo);
                    };
                    p.TiemposMnu.Items.Add(item);
                }
            }
        }
    }
    #endregion

一切都好了。但是,当我点击/单击我的按钮时,不显示MenuFlyout。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

但是当我点击/点击我的按钮时,不会显示MenuFlyout。

如果您想点按/点击按钮以显示MenuFlyout,您需要使用Button.Flyout。详情请参阅remark部分。

<Button.Flyout>
    <MenuFlyout x:Name="TiemposMnu">
        <MenuFlyout.Items>                 
        </MenuFlyout.Items>
    </MenuFlyout>
</Button.Flyout>

如果要触发MenuFlyoutButton.ContextFlyout的关联,请右键单击(鼠标)或直接按住按钮(触摸)。模式详情请参阅official sample