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>

有两个问题我无法解决:

  1. 弹出型按钮在点击以下项目之一时显示:

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

    但是,无论我如何设置弹出型按钮,它总是显示在屏幕顶部,而不是在点击的项目上。为什么?

  2. 弹出型按钮在单独的滚动查看器上包含两个文本块。其中一个上的文本超过了弹出按钮的宽度,但滚动查看器似乎无法工作(我无法水平滚动文本块)。为什么?

Windows Phone 8.1中弹出项目控制的问题

所以让我们很快把它们敲出来。您的#1将是预期的结果,它只是偏离了默认的FlyoutPlacementMode枚举,其中通常您的弹出按钮只是在顶部出现在5个位置之一,顶部、底部、左侧、右侧或完整(中心)

如何修复它,放弃弹出控件,只需设置自己面板的动画,就可以在点击事件或其他事件中做同样的事情,一点也不难。

你的#2,如果我没记错的话,ScrollViewer上类似HorizontalScrollBarVisibility的默认值默认为False。所以只需添加HorizontalScrollBarVisibility="Auto"即可。

希望这有帮助,欢呼