簡體   English   中英

Windows Phone 8.1中的項目控件彈出問題

[英]Problems with flyout over itemscontrol in Windows Phone 8.1

我有以下XAML代碼:

    <Grid Grid.Row="1" x:Name="ContentRoot" Margin="19,9.5,19,0">
        <ScrollViewer>
            <ItemsControl ItemsSource="{Binding History}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Vertical" Tapped="HistoryItemTapped">
                            <FlyoutBase.AttachedFlyout>
                                <Flyout>
                                    <StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                                        <ScrollViewer>
                                            <TextBlock Foreground="{ThemeResource PhoneMidBrush}" FontSize="{ThemeResource TextStyleExtraLargeFontSize}" HorizontalAlignment="Left" Text="{Binding Expression}" />
                                        </ScrollViewer>
                                        <ScrollViewer>
                                            <TextBlock FontSize="{ThemeResource TextStyleExtraLargePlusFontSize}" HorizontalAlignment="Right" Text="{Binding Result}" />
                                        </ScrollViewer>
                                    </StackPanel>
                                </Flyout>
                            </FlyoutBase.AttachedFlyout>
                            <TextBlock Foreground="{ThemeResource PhoneMidBrush}" FontSize="{ThemeResource TextStyleExtraLargeFontSize}" HorizontalAlignment="Left" Text="{Binding Expression}" 
                                       TextTrimming="CharacterEllipsis"/>
                            <TextBlock FontSize="{ThemeResource TextStyleExtraLargePlusFontSize}" HorizontalAlignment="Right" Text="{Binding Result}" 
                                       TextTrimming="CharacterEllipsis"/>
                        </StackPanel>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </ScrollViewer>
    </Grid>

我無法解決兩個問題:

  1. 點按以下項目之一即可顯示彈出窗口:

     private void HistoryItemTapped(object sender, TappedRoutedEventArgs e) { FlyoutBase.GetAttachedFlyout((FrameworkElement)sender).ShowAt((FrameworkElement)sender); } 

    但是,無論我如何設置彈出按鈕,彈出按鈕始終顯示在屏幕頂部,而不顯示在所點擊的項目上方。 為什么?

  2. 彈出按鈕在單獨的ScrollViewer上包含兩個TextBlocks。 其中之一上的文本超出了彈出窗口的寬度,但滾動查看器似乎無法正常工作(我無法水平滾動文本塊)。 這是為什么?

因此,讓我們快速地將它們淘汰掉。 您的#1會是預期的結果,它只是關閉了默認的FlyoutPlacementMode枚舉,通常情況下,彈出按鈕只是顯示在頂部,底部,左側,右側或全(中心)5個位置之一的頂部

如何修復它,拋開彈出控件,只為自己的面板設置動畫,以便在輕拍事件或其他事情上做同樣的事情,一點也不難。

#2,如果我還記得正確的ScrollViewer上的默認值,例如HorizontalScrollBarVisibility默認為False。 因此,只需向其添加Horizo​​ntalScrollBarVisibility =“ Auto”。

希望這會有所幫助,歡呼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM