wpf - 文本 block 文本换行不起作用

标签 wpf textblock word-wrap datagridtemplatecolumn

有人可以告诉我为什么换行在这些文本 block 中不起作用吗? 我只是不知道为什么,我将所有堆栈面板更改为网格以避免无限空间问题,但它仍然不起作用......

<Border x:Name="SummaryRightSideContainerBorder" Grid.Column="1"
        Margin="10,10,10,10" BorderBrush="Black"
        BorderThickness="1">
    <ContentControl x:Name="SummaryRightSideContainerContentControl" Content="{Binding SelectedItem, ElementName=SummaryTreeView}">
        <ContentControl.Resources>
            <DataTemplate DataType="{x:Type ViewModelsProject:ProjectViewModel}">
                <StackPanel>
                    <TextBlock Text="Displaying Project DataContract stuff..." />
                </StackPanel>
            </DataTemplate>
            <DataTemplate DataType="{x:Type ViewModelsProject:SequenceViewModel}">
                <StackPanel>
                    <TextBlock Text="Displaying Sequence DataContract stuff..." />
                </StackPanel>
            </DataTemplate>
            <DataTemplate DataType="{x:Type ViewModelsProject:GroupViewModel}">
                <StackPanel>


                    <DataGrid Margin="10" AutoGenerateColumns="False"
                                  Background="Transparent" BorderThickness="0"
                                  CanUserAddRows="False"
                                  CellStyle="{DynamicResource dgCellStyle}"
                                  ColumnHeaderStyle="{DynamicResource dgHeader}"
                                  DataContext="{Binding ElementName=SummaryTreeView,
                                                        Path=SelectedItem}"
                                  GridLinesVisibility="None"
                                  ItemsSource="{Binding Standards}"
                                  Padding="0" RowHeaderWidth="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                        <DataGrid.Resources>
                            <Style x:Key="dgHeader" TargetType="{x:Type DataGridColumnHeader}">
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                                            <TextBlock Width="{TemplateBinding Width}"
                                                           Padding="5"
                                                           Text="{TemplateBinding Content}"
                                                           TextAlignment="Left">
                                                    <TextBlock.Background>
                                                        <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                                            <GradientStop Offset="0.0" Color="#373638" />
                                                            <GradientStop Offset="1.0" Color="#77797B" />
                                                        </LinearGradientBrush>
                                                    </TextBlock.Background>
                                            </TextBlock>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                                <Setter Property="OverridesDefaultStyle" Value="True" />
                                <Setter Property="Background" Value="Green" />
                                <Setter Property="Foreground" Value="White" />
                                <Setter Property="FontSize" Value="12" />
                                <Setter Property="Background">
                                    <Setter.Value>
                                        <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                            <GradientStop Offset="0.0" Color="#373638" />
                                            <GradientStop Offset="1.0" Color="#77797B" />
                                        </LinearGradientBrush>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                            <Style x:Key="dgCellStyle" TargetType="{x:Type DataGridCell}">
                                <Style.Triggers>
                                    <Trigger Property="DataGridCell.IsSelected" Value="True">
                                        <Setter Property="Background" Value="White" />
                                        <Setter Property="Foreground" Value="Black" />
                                        <Setter Property="BorderThickness" Value="0" />
                                    </Trigger>
                                </Style.Triggers>
                            </Style>
                        </DataGrid.Resources>
                        <DataGrid.Columns>
                            <DataGridTemplateColumn Header="Standards">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>


                                        <Grid Margin="5">
                                            <Grid.RowDefinitions>
                                                <RowDefinition />
                                                <RowDefinition />
                                            </Grid.RowDefinitions>
                                            <TextBlock Grid.Row="0" Text="{Binding Path=StepMaster.Description}" VerticalAlignment="Center" FontWeight="SemiBold"/>
                                            <Grid Grid.Row="1">
                                                <Grid.RowDefinitions>
                                                    <RowDefinition />
                                                    <RowDefinition />
                                                    <RowDefinition />
                                                </Grid.RowDefinitions>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="Auto" />
                                                    <ColumnDefinition Width="*" />
                                                </Grid.ColumnDefinitions>
                                                <TextBlock Grid.Row="0" Grid.Column="0" Text="Standard: " VerticalAlignment="Top"/>
                                                <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=Standard}" Margin="5,0,0,0" VerticalAlignment="Top" TextWrapping="Wrap"/>

                                                <TextBlock Grid.Row="1" Grid.Column="0" Text="Details: " VerticalAlignment="Top"/>
                                                <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=Details}" Margin="5,0,0,0" VerticalAlignment="Top" TextWrapping="Wrap"/>

                                                <TextBlock Grid.Row="2" Grid.Column="0" Text="Comments: " VerticalAlignment="Top"/>
                                                <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=Comments}" Margin="5,0,0,0" VerticalAlignment="Top" TextWrapping="Wrap"/>
                                            </Grid>
                                        </Grid>

                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>
                        </DataGrid.Columns>
                    </DataGrid>


                </StackPanel>
            </DataTemplate>
            <DataTemplate DataType="{x:Type ViewModelsProject:StepViewModel}">
                <UniformGrid Rows="3">
                    <TextBlock Margin="10" FontWeight="DemiBold"
                               Text="Standards" />
                    <TextBlock Margin="10" FontWeight="DemiBold"
                               Text="Standards Details" />
                    <StackPanel Orientation="Vertical">
                        <DataGrid Margin="10" AutoGenerateColumns="False"
                            <Another data grid is here />
                        </DataGrid>
                    </StackPanel>
                </UniformGrid>
            </DataTemplate>
        </ContentControl.Resources>
    </ContentControl>
</Border>

最佳答案

事实证明,实现此目的的唯一方法是直接在 DataGrid 中使用属性:

MaxWidth="{Binding ElementName=SummaryRightSideContainerBorder, Path=ActualWidth}" ColumnWidth="*" 

使用 MaxWidth 以便数据网格本身不会超出其容器边界,使用 ColumnWidth 以便列使用数据网格中 100% 的可用空间。

Blam 的回答让我走上了寻找解决方案的正确道路。

关于wpf - 文本 block 文本换行不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11022973/

相关文章:

c# - WPF DynamicDataDisplay - 使用标记缓慢绘图

Javascript - 获取一行中的最后一个词

c++ - 防止静态初始化顺序 "fiasco",C++

WPF:如何使文本 block 触发按键事件?

html - 如何让一个段落不在一行中显示

wpf - 如何增加复选框和相关文本之间的空间?

c# - 如何在C#中逐点绘制形状?

c# - 使用内部类中存在的值更新进度条

.net - 日语、中文和韩语等语言的 KeyUp/KeyDown 替代方案?

c# - Textblock DataTriggers 未触发