0

我有嵌入的AppBarButton內像這樣一個彈出按鈕:是否有可能臨時postpane顯示AppBarButton的加入Flyout?

<AppBarButton x:Name="appbarbtnOpenPhotosets" Icon="OpenFile" Label="Open Existing Photoset[s]" AutomationProperties.Name="Open File" Tapped="appbarbtnOpenPhotosets_Tapped" > 
    <Button.Flyout> 
    . . . 
    </Button.Flyout> 
</AppBarButton> 

我想,在某些情況下,第一次有機會到一個文件中看到彈出的前重命名呈現給用戶。我試圖看到,如果這樣可以這樣工作:

async private void appbarbtnOpenPhotosets_Tapped(object sender, TappedRoutedEventArgs args) 
{ 
    // Want to conditionally postpone the operation 
    bool myBucketsGotAHoleInIt = PhotraxUtils.GetLocalSetting(CAINT_BUY_NO_BEER); 
    if (myBucketsGotAHoleInIt) 
    { 
     MessageDialog dlgDone = new MessageDialog("Can you see me now?"); 
     await dlgDone.ShowAsync(); 
     args.Handled = false; // <= adding this made no difference 
    } 
} 

這個作品,因爲我看到「你現在可以看到我嗎?對話框,但可防止Flyout飛出。沒有飛出的飛出物不會比飛過的空中飛行的松鼠或魚更有用。

那麼,如何暫時禁止我的彈出窗口,然後再打電話呢? Flyout沒有Open()方法......有沒有其他方法可以調用它?

回答

1

單擊控件時,附加到按鈕的彈出將自動打開。 如果您不希望它自動打開,則需要將其附加到另一個控件。

來自實例official documentation採取:

<!-- Flyout declared inline on a FrameworkElement --> 
<TextBlock> 
    <FlyoutBase.AttachedFlyout> 
     <Flyout> 
     <!-- Flyout content --> 
     </Flyout> 
    </FlyoutBase.AttachedFlyout> 
</TextBlock> 

然後你就可以顯示在彈出只要你想,呼籲FlayoutBase.ShowAttachedFlyout()並通過你控制的FrameworkElement的鑄造價值。

FlyoutBase.ShowAttachedFlyout(frameworkElement); 

所以,你的情況:

async private void appbarbtnOpenPhotosets_Tapped(object sender, TappedRoutedEventArgs args) 
{ 
    // Want to conditionally postpone the operation 
    bool myBucketsGotAHoleInIt = PhotraxUtils.GetLocalSetting(CAINT_BUY_NO_BEER); 
    if (myBucketsGotAHoleInIt) 
    { 
     MessageDialog dlgDone = new MessageDialog("Can you see me now?"); 
     await dlgDone.ShowAsync(); 
     // New code 
     FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender); 
    } 
} 

如果你不能改變的控制,你應該能夠使用我貼有Button代替TextBlock的代碼。我不確定這一點,但你可以試試。

相關問題