2013-10-25 55 views
1

我有一個ListBox與此模板。Windows Phone 7中的邊框控制,自動高度和寬度不對

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Key="Template"> 
     <StackPanel Margin="0,10"> 
      <Border BorderBrush="Black" BorderThickness="1" Background="#FFFFC000" Width="460" MinHeight="76"> 
       <StackPanel Margin="4,4,-4,-153"> 
        <TextBlock Text="{Binding }" HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Black" TextWrapping="Wrap"/> 
        <TextBlock " Text="{Binding Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Black" TextWrapping="Wrap"/> 
       </StackPanel> 
      </Border> 
     </StackPanel> 
    </DataTemplate> 
</phone:PhoneApplicationPage.Resources> 

然而,我必須強迫對Border設置WidthHeight否則它使得像Width和「2」 Height

這就像它不明白我有2 TextBlock裏面,並不會擴大,以填補他們兩個。

這讓我不得不把固定的高度和寬度放在我不喜歡的地方,就好像文字太大而被截斷一樣。

回答

0

你可以拋棄你的StackPanel因爲你不需要它們,它們也是讓你的包裝不起作用,你需要一個面板,如Grid。負Margin也不是你通常在DataTemplate中看到的ListBox的東西,所以我猜你還有其他一些時髦佈局的東西從樹上其他地方進行。

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Key="Template"> 
     <Grid Margin="0,10"> 
      <Border BorderBrush="Black" BorderThickness="1" Background="#FFFFC000"/> 
      <TextBlock TextWrapping="Wrap" 
         HorizontalAlignment="Center" Margin="4,4,-4,-153"> 
       <Run Text="{Binding }"/><LineBreak/> 
       <Run Text="{Binding Mode=OneWay}"/> 
      </TextBlock> 
     </Grid> 
    </DataTemplate> 
</phone:PhoneApplicationPage.Resources> 

所以,除非我失去了一些地方這應該可以解決您的Grid將處理其子的大小爲您和消耗其父所需的空間。然而,如果你的結構中有其他東西推動東西,並且不會讓它消耗該空間,它應該調用你的包裝。

希望這有助於:)

+0

嗯,我只是打周圍可能有意外擊中-4一些事情發生,我刪除,改變電網。如何在項目模板中,我有一個堆棧面板,以及可以留下或更改?它實際上似乎是導致內部問題的外部堆棧面板似乎很好。 – chobo2

+0

我沒有LineBreak,我需要導入一些東西嗎? – chobo2

+0

Ya控制兩個TextBlocks的內部控件不會是罪魁禍首,有時我只是在某些xaml上執行所有OCD。至於LineBreak,我沒有在WP7上測試它,我只是認爲這對XAML來說非常普遍,因此您可能需要回到舊的方式,使用單獨的TextBlocks並使用它,它是Grid容器,這是你的主要冠軍在這一個:) –