0 votes

Remplacement des chiffres par des hachages dans WPF lorsque le texte est trop grand

Je suis à la recherche d'une méthode simple et idiomatique pour reproduire le signal visuel d'Excel indiquant qu'un nombre est trop grand pour être affiché dans une colonne. J'ai le xaml suivant :

<ListView.View>
    <GridView>
        <GridViewColumn ... />
    </GridView>
<ListView.View>

et ce que je voudrais, c'est que si le texte de la colonne est trop petit pour être affiché (c'est-à-dire qu'il est coupé), je veux remplacer les données affichées par des caractères '#'.

1voto

Kent Boogaart Points 97432

Vous pouvez lier plusieurs fois le contenu de la cellule au nombre réel, à la largeur de la colonne qui la contient et à la taille souhaitée de la cellule. TextBlock . Ensuite, utilisez un convertisseur pour convertir le contenu sélectionné en conséquence. Pseduo-XAML :

<GridViewColumn.CellTemplate>
    <DataTemplate>
        <TextBlock x:Name="_textBlock">
            <TextBlock.Content>
                <MultiBinding Converter="{StaticResource MyConverter}">
                    <Binding Path="."/>
                    <Binding Path="ActualWidth" RelativeSource="{RelativeSource Ancestor, AncestorType={GridViewColumn}}"/>
                    <Binding Path="DesiredSize.Width" ElementName="_textBlock"/>
                </MultiBinding>
            </TextBlock.Content>
        </TextBlock>
    </Datatemplate>
</GridViewColumn.CellTemplate>

Pseduo-code :

public class MyConverter : IMultiValueConverter
{
    public object Convert(...)
    {
        object content = values[0];
        double actualWidth = (double)values[1];
        double desiredWidth = (double)values[2];

        if (desiredWidth > actualWidth)
        {
            return "######";
        }

        return content;
    }
}

En dehors de cela, vous pouvez écrire votre propre TextBlock qui fait une chose similaire automatiquement, et ensuite l'utiliser dans chaque modèle de colonne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X