1
我正在使用一個ListBox,項目模板是一個包含兩列的網格。每列需要佔用一半的可用空間。文本塊在包含星號的網格中不正確地包裝
如果其中一列中的文本變得太大,我需要它來包裝。
我用下面的代碼:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderBrush="HotPink" BorderThickness="2">
<TextBlock Text="{Binding Title}"
FontFamily="Arial"
FontSize="16"/>
</Border>
<Border Grid.Column="1" BorderBrush="HotPink" BorderThickness="2">
<TextBlock Text="{Binding Description}"
FontFamily="Arial"
FontSize="16"
TextWrapping="Wrap"/>
</Border>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
此工作正常時,文字不長。如果文本太長,則第二列開始佔用儘可能多的空間,然後溢出屏幕。
我已經使用Hot Pink邊框來顯示下圖中每列的輪廓。
有沒有辦法讓文本包裝工作在這種方式?
嘗試使用Dock面板http://msdn.microsoft.com/en-us/library/system.windows.controls.dockpanel.aspx通過這種方式您的包裝TextBlock高度可能不止一行。也可以設置LastChildFill爲true。你的文件沒有被換行,因爲當你編寫它時,寬度不是固定的,而是由*引起的。您也可以使用MaxWidth。它必須被包裝然後。相反,你可以使用AcceptReturn true來接受輸入字符。希望可以幫助 – 2012-04-20 11:10:54
http://stackoverflow.com/questions/1755266/size-a-textblock-to-a-button-that-changes-width-dynamically這對我來說,仔細使用這種行爲。 – 2012-04-20 12:12:57