2009-02-11 80 views
6

此問題源於無法讓我的TextBlock進行換行。基本上,作爲最後一次嘗試,我在我的容器網格的列上設置了MaxWidth。我很驚訝地發現我的孩子標籤和文本框仍然做他們想做的事(壞孩子,壞),並且不受我網格列的MaxWidth =「200」的限制。WPF Grid Grid MaxWidth not enforced

我真正想做的是讓我的TextBlock填充可用寬度並在必要時進行換行。到目前爲止,在Universe中的每個已知父項上嘗試了很多種水平對齊=「伸展」後,除了在TextBlock上設置了明確的MaxWidth =「400」或任何數字之外,沒有任何工作。這不好,因爲我需要TextBlock來填充可用的寬度,而不受限於某個固定數量。謝謝!

<ItemsControl> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition MaxWidth="200" SharedSizeGroup="A" /> 
       <ColumnDefinition MaxWidth="200" SharedSizeGroup="B" /> 
      </Grid.ColumnDefinitions> 

      <Label VerticalAlignment="Top" Margin="0 5 0 0" Grid.Column="0" Style="{StaticResource LabelStyle}" Width="Auto" Content="{Binding Value.Summary}" /> 
      <TextBlock Grid.Column="1" Margin="5,8,5,8" FontWeight="Normal" 
         Background="AliceBlue" 
         Foreground="Black" Text="{Binding Value.Description}" 
         HorizontalAlignment="Stretch" 
         TextWrapping="Wrap" Height="Auto" /> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

回答

2

我試圖通過對Kaxaml粘貼你的格子元素之間的所有內容複製你的問題,但一切都包裹,你會希望它。 (我插入了正規的字符串,你在做綁定,並刪除了標籤樣式)。

這可能是問題在樹上更高。

我建議粘貼到Kaxaml或類似的塊來測試,看看哪個父母打破你的用戶界面。

1

我提供了這個問題的答案,只是它使用ListView而不是ItemsControl,但問題可能是相同的。您的ItemPresenter周圍可能有一個ScrollViewer,您需要編輯ItemsControl模板的副本。

WPF ListView TextBlock TextWrapping