Windows Phone 8.1中弹出项目控制的问题
本文关键字:项目 控制 问题 Phone Windows | 更新日期: 2023-09-27 18:26:52
我得到了以下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); }
但是,无论我如何设置弹出型按钮,它总是显示在屏幕顶部,而不是在点击的项目上。为什么?
弹出型按钮在单独的滚动查看器上包含两个文本块。其中一个上的文本超过了弹出按钮的宽度,但滚动查看器似乎无法工作(我无法水平滚动文本块)。为什么?
所以让我们很快把它们敲出来。您的#1将是预期的结果,它只是偏离了默认的FlyoutPlacementMode枚举,其中通常您的弹出按钮只是在顶部出现在5个位置之一,顶部、底部、左侧、右侧或完整(中心)
如何修复它,放弃弹出控件,只需设置自己面板的动画,就可以在点击事件或其他事件中做同样的事情,一点也不难。
你的#2,如果我没记错的话,ScrollViewer
上类似HorizontalScrollBarVisibility
的默认值默认为False。所以只需添加HorizontalScrollBarVisibility="Auto"即可。
希望这有帮助,欢呼