2014-10-17 58 views
0

我有下面這段XAML代碼:問題與彈出過的ItemsControl中的Windows Phone 8.1

<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. 該彈出窗口在單獨的ScrollViewers上包含兩個TextBlocks。其中一個文本超出了彈出窗口的寬度,但滾動查看器看起來沒有工作(我無法水平滾動文本塊)。這是爲什麼?

回答

1

所以讓我們快速地敲掉這些。您的#1將會是預期的結果,它只是關閉默認的FlyoutPlacementMode枚舉,其中通常您的彈出只是意味着出現在頂部的頂部,頂部,底部,左側,右側或全部(中心)

如何解決它,拋出彈出控件,並只是在自己的面板上進行動畫製作,以在水龍頭事件或其他任何事情上做同樣的事情,而不是一點也不難。

你的#2,如果我記得ScrollViewer的默認值HorizontalScrollBarVisibility默認爲False。所以只需將Horizo​​ntalScrollBarVisibility =「Auto」添加到它。

希望這有助於歡呼

+0

好......那麼,什麼是'FlyoutBase.ShowAt'應該做的,如果在同一個地方的屏幕始終顯示彈出? – Spook 2014-10-17 19:55:13

+0

啊啊對不起,可以看到如何可能會被誤解,而不是屏幕,你剛剛設置錯了,檢查像[這裏](http://stackoverflow.com/questions/23606049/flyout-showat-argumentexception基於內容的) – 2014-10-17 19:59:46

+0

您能否引導我如何解決代碼在單個項目上顯示彈出窗口而不是在屏幕頂部? – Spook 2014-10-17 20:02:28