【发布时间】:2016-12-09 21:35:56
【问题描述】:
为什么网格中 TextBlock 的 TextWrapping 仅在我指定 TexBlock Width 时才有效?
当我删除 TextBlock MaxWidth 属性时,TextWrapping 不起作用。
组合框的完整代码
<Window Height="600" Width="480">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<ComboBox Grid.Row="0" Grid.Column="0" ItemsSource="{Binding MyList}" SelectedIndex="0" x:Name="comboBox" HorizontalAlignment="Stretch" VerticalAlignment="Top">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Margin="2" Text="{Binding Code}"></TextBlock>
<TextBlock Margin="2" Text="{Binding Name}"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid ShowGridLines="False">
<Grid.ColumnDefinitions>
<ColumnDefinition MaxWidth="50"/>
<ColumnDefinition Name="Column1" MaxWidth="300"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Code}"/>
<TextBlock Grid.Column="1" MaxWidth="{Binding ElementName=Column1, Path=MaxWidth}" Text="{Binding Name}" TextWrapping="Wrap"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
</Grid>
</Window>
【问题讨论】:
-
请提供您问题的完整可重现样本。例如 Grid 的父元素是什么?
-
我为组合框添加了完整代码。
-
您还应该包括 ComboBox 的所有父元素,一直到父窗口。请提供任何人都可以按原样运行的最小示例。
-
更新了我的帖子