[英]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>
我無法解決兩個問題:
點按以下項目之一即可顯示彈出窗口:
private void HistoryItemTapped(object sender, TappedRoutedEventArgs e) { FlyoutBase.GetAttachedFlyout((FrameworkElement)sender).ShowAt((FrameworkElement)sender); }
但是,無論我如何設置彈出按鈕,彈出按鈕始終顯示在屏幕頂部,而不顯示在所點擊的項目上方。 為什么?
彈出按鈕在單獨的ScrollViewer上包含兩個TextBlocks。 其中之一上的文本超出了彈出窗口的寬度,但滾動查看器似乎無法正常工作(我無法水平滾動文本塊)。 這是為什么?
因此,讓我們快速地將它們淘汰掉。 您的#1會是預期的結果,它只是關閉了默認的FlyoutPlacementMode枚舉,通常情況下,彈出按鈕只是顯示在頂部,底部,左側,右側或全(中心)5個位置之一的頂部
如何修復它,拋開彈出控件,只為自己的面板設置動畫,以便在輕拍事件或其他事情上做同樣的事情,一點也不難。
#2,如果我還記得正確的ScrollViewer
上的默認值,例如HorizontalScrollBarVisibility
默認為False。 因此,只需向其添加HorizontalScrollBarVisibility =“ Auto”。
希望這會有所幫助,歡呼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.