2012-05-20 223 views
0

我想在wp7應用程序中水平包裝我的控制。那就是爲什麼我使用Silverlight工具箱包裝面板。它的工作正常,直到第一行,但在第一行之後,我的第二個控件進入第二行。windows phone 7 wrappanel不能正常工作

http://s13.postimage.org/8oxnxxcef/First.png

第一行後,我的TextBox控件低於這是錯誤的,因爲它在wrappanel所以它必須是正確的去我的列表框項目。

enter image description here

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,0,0"> 
      <StackPanel> 
       <toolkit:WrapPanel Orientation="Horizontal"> 
       <ListBox Name="lstDemo" SelectionChanged="lstDemo_SelectionChanged"> 
       <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <toolkit:WrapPanel> 
         </toolkit:WrapPanel> 
        </ItemsPanelTemplate> 
       </ListBox.ItemsPanel> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Name}" Margin="5,0,0,0"></TextBlock> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
        <TextBox Name="txtHello" Margin="5,0,0,0" FontSize="20" /> 
      </toolkit:WrapPanel> 

      </StackPanel> 
     </Grid> 

請告訴我該怎麼解決這個問題,所以我的第二控制列表框項目後,總是來作爲其在wrappanel和控制水平包裹。

回答

0

包裝面板正如其設想的那樣工作。包裝面板將其子項並排顯示。因此,在您的示例中,外部面板並排顯示兩個[ListBox] [TextBox]子元素。因爲您將ListBox.ItemsPanel作爲WrapPanel,它會嘗試縮小到左側。當您的列表框有足夠的項目進行換行時,ListBox的寬度現在是控件的寬度。所以WrapPanel仍然並排顯示孩子,但是現在第一個孩子(ListBox)的寬度更大。

所以,你的第一示例看起來像(使用側例如側從above_ [列表框寬度:300] [TextBlock的] 第二個例子: [列表框寬度:480] [TextBlock的]

我很抱歉地說,有沒有簡單的方法來做你所要求的。

*我總是說任何事情都可以在xaml中進行,如果你願意寫一個自定義控件,你可以做到這一點

+0

你能否建議我任何出路做這件事... –

0

我可能會誤解這個問題,但爲什麼我們不能e StackPanel?

只需使用StackPanel並將其方向屬性設置爲水平。 WrapPanel不適合你正在嘗試做的事情。

+0

嗨,它也不適合我。我試過了你的方法。其實我在我的堆棧面板中有兩個控件。我希望我的控件總是浮動到正確的位置。所以這就是爲什麼我使用WrapPanel。如果你有任何想法,請讓我知道 –

0

要在包含控件列表的元素中使用Horizo​​ntalAlignment =「Right」。像

<Grid HorizontalAlignment="Right"> 
    <StackPanel>...items...</StackPanel> 
</Grid> 

可能會伎倆。不過要注意的是,我沒有試過這個。