2011-11-12 26 views
1

有沒有簡單的方法來定位一個全景內的AdControl?現在,我只能讓我的廣告控制顯示,如果設置我的對象樹像這樣:WP7 - 定位AdControl

Layout Root > Panorama > ... 
      > AdControl1 

也就是說,既有我的全景和我的廣告控制爲LayoutRoot的直接孩子。

我只是想表明我的廣告控制第一PanoramaItem,但我這樣做的時候,就無法呈現:

LayoutRoot > Panorama > PanoramaItem > StackPanel > ListBox 
                > AdControl 

也就是說,我希望我的廣告控制成爲我的列表框的下方,貼在僅在PanoramaItem的底部。我錯過了什麼?

編輯:的XAML,額外PanoramaItems省略

工作

<!--LayoutRoot is the root grid where all page content is placed--> 
    <Grid x:Name="LayoutRoot" Background="Transparent"> 

     <!--Panorama control--> 
     <controls:Panorama Title="bad religion"> 
      <controls:Panorama.Background> 
       <ImageBrush ImageSource="PanoramaBackground.png"/> 
      </controls:Panorama.Background> 

      <!--Panorama item one--> 
      <controls:PanoramaItem Header="content"> 
       <!--Double line list with text wrapping--> 
       <ListBox x:Name="LyricsListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="LyricsListBox_SelectionChanged"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <StackPanel Margin="0,0,0,17" Width="432" Height="78"> 
           <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
           <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
          </StackPanel> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 
      </controls:PanoramaItem> 
     </controls:Panorama> 
     <my:AdControl AdUnitId="TextAd" ApplicationId="test_client" Height="80" HorizontalAlignment="Left" Margin="0,720,0,0" Name="adControl1" VerticalAlignment="Top" Width="480" /> 
    </Grid> 

不工作

<!--LayoutRoot is the root grid where all page content is placed--> 
    <Grid x:Name="LayoutRoot" Background="Transparent"> 

     <!--Panorama control--> 
     <controls:Panorama Title="bad religion"> 
      <controls:Panorama.Background> 
       <ImageBrush ImageSource="PanoramaBackground.png"/> 
      </controls:Panorama.Background> 

      <!--Panorama item one--> 
      <controls:PanoramaItem Header="content"> 
       <StackPanel> 
        <!--Double line list with text wrapping--> 
        <ListBox x:Name="LyricsListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="LyricsListBox_SelectionChanged"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Margin="0,0,0,17" Width="432" Height="78"> 
            <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
            <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
           </StackPanel> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 
        <my:AdControl AdUnitId="TextAd" ApplicationId="test_client" Height="80" HorizontalAlignment="Left" Margin="0,720,0,0" Name="adControl1" VerticalAlignment="Top" Width="480" /> 
       </StackPanel> 
      </controls:PanoramaItem> 
     </controls:Panorama>   
    </Grid> 
+0

我們在全景圖上使用了廣告控件,沒有任何問題。這將有助於查看您的XAML頁面。可能是ListBox將adcontrol從頁面底部推出,以至於看不到它。另外,如果adcontrol配置不正確,您可能看不到任何內容,因爲它在沒有內容顯示時會自動摺疊。 –

+0

@WaltRitscher:很高興聽到!我已經用我當前的工作和非工作代碼更新了我的帖子。如果這件事很明顯,我表示歉意,我現在只做了一週的微軟開發! – Josh

回答

2

您無法看到AdControl的原因是由於您的保證金設置。你有

Margin="0,720,0,0" 

,從它的容器的頂部,在這種情況下是的StackPanel,而不是LayoutRoot網格放置廣告控制720像素下來。

這意味着AdControl不在屏幕上。

在您的示例代碼中,您可以通過將邊距更改爲類似的方式來創建臨時修補程序。

Margin="0,420,0,0" 

但這不是一個好的長期解決方案。您應該考慮在網格中對接或使用多行。

另一個考慮,如果你用歌詞填充列表框。您是否考慮過在啓用TextWrapping的情況下使用文本塊?

+0

謝謝,那正是問題所在。儘管現在我的「廣告」只是一個空白的廣場,不再顯示「必應測試廣告」文本。思考? – Josh

+0

您是否在AdControl上設置尺寸?我相信在480×80的正確尺寸。 –

1

如果ListBox是推動廣告控制斷底的pa如沃爾特里奇爾說,它可能是一個選項,將它包裝在一個DockPanel而不是一個StackPanelLastChildFill設置爲true和其中的元素的順序顛倒(以便ListBox是最後,因此填補剩餘的空間DockPanel而不是擴大StackPanel以佔用其全部要求的尺寸)。

也就是說,這樣的事情:

<DockPanel LastChildFill="True" ...> 
    <my:AdControl/> 
    <ListBox/> 
</DockPanel> 

爲什麼這可能會發生的原因是,ListBox大小自身以適應內容(StackPanel使得它可以不管它的大小希望是,相到DockPanel這將限制它 - 在這種情況下,在Windows上你會添加一個ScrollViewer,但我不確定你會爲電話做什麼)。

如果是這樣的話,你應該看到一個截斷的ListBox和下面的AdControl。如果不是,那麼AdControl會在全景圖中顯示,還是在堆疊面板上的ListBox之上?

+0

我嘗試使用本教程添加到DockPanel(http://www.windowsphonegeek.com/articles/Using-DockPanel-in-WP7)中,並在添加對.dll的引用並添加命名空間後, '找不到類型的DockPanel'錯誤。有了一個常規的StackPanel,就沒有任何東西。空白。 – Josh

+0

我添加了DockPanel,但它仍然只是空白。 ' – Josh

+0

Josh,你是說DockPanel是空白的還是AdControl? –