。如何使用“...”截断DataGridTextColumn LongText

时间:2015-12-25 13:33:53

标签: c# wpf datagrid truncate

。我需要截断DataGridTextColumn LongTexts与“...”在右边,但我不知道“如何制作”像这样:

What i Want

。现在不喜欢:

Actual

这是我的DataGrid XAML:

<DataGrid Name="Musics" AutoGenerateColumns="False" HorizontalGridLinesBrush="Transparent">
        <DataGrid.Columns>
            <!--<DataGridCheckBoxColumn ElementStyle="{StaticResource MaterialDesignCheckBox}">
                <DataGridCheckBoxColumn.Header>
                    <CheckBox/>
                </DataGridCheckBoxColumn.Header>
            </DataGridCheckBoxColumn>-->
            <DataGridTextColumn/>
            <DataGridTextColumn Header="Título" Binding="{Binding Path=Title}" MaxWidth="400" SortDirection="Ascending" SortMemberPath="Title"/>
            <DataGridTextColumn Header="Duração" Binding="{Binding Path=Duration}" ElementStyle="{StaticResource rightAlign}" IsReadOnly="True" CanUserResize="False">
                <DataGridTextColumn.HeaderStyle>
                    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
                        <Setter Property="HorizontalAlignment" Value="Right"/>
                        <Setter Property="Padding" Value="4 8 2 8"/>
                    </Style>
                </DataGridTextColumn.HeaderStyle>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Intérprete" Binding="{Binding Path=Artist}" MaxWidth="100"/>
            <DataGridTextColumn Header="Álbum" Binding="{Binding Path=Album}" MaxWidth="200"/>
            <DataGridTextColumn Header="Género" Binding="{Binding Path=Genre}" MaxWidth="200"/>
            <DataGridTextColumn Header="Classificação" Binding="{Binding Path=Classification}" ElementStyle="{StaticResource rightAlign}">
                <DataGridTextColumn.HeaderStyle>
                    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
                        <Setter Property="HorizontalAlignment" Value="Right"/>
                        <Setter Property="Padding" Value="4 8 2 8"/>
                    </Style>
                </DataGridTextColumn.HeaderStyle>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Reproduções" Binding="{Binding Path=TimesPlayed}" ElementStyle="{StaticResource rightAlign}" IsReadOnly="True">
                <DataGridTextColumn.HeaderStyle>
                    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
                        <Setter Property="HorizontalAlignment" Value="Right"/>
                        <Setter Property="Padding" Value="4 8 2 8"/>
                    </Style>
                </DataGridTextColumn.HeaderStyle>
            </DataGridTextColumn>
        </DataGrid.Columns>
        <DataGrid.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Reproduzir"/>
                <MenuItem Header="A seguir"/>
                <MenuItem Header="Informações"/>
                <MenuItem Header="Eliminar"/>
                <MenuItem Header="Abrir no explorador"/>
                <MenuItem Header="Adicionar a Playlis">
                    <MenuItem Header="Mais reproduzidas"/>
                </MenuItem>
            </ContextMenu>
        </DataGrid.ContextMenu>
    </DataGrid>

谢谢,并等待你的帮助:

1 个答案:

答案 0 :(得分:3)

使用ElementStyle

<Grid>
    <Grid.Resources>
        <Style x:Key="TextBlockStyleKey" TargetType="{x:Type TextBlock}">
            <Setter Property="TextTrimming" Value="CharacterEllipsis"/>
        </Style>
    </Grid.Resources>

    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Items}">
        <DataGrid.Columns>
            <DataGridTextColumn ElementStyle="{StaticResource TextBlockStyleKey}" Header="Name" Binding="{Binding Name}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

结果:

enter image description here