2009-09-13 4 views
1

Ma question ci-dessous est répondue mais je viens de réaliser que maintenant le FontSize redimensionne seulement dans une direction.Redimensionner la police dans TextBox dans la grille

Y at-il une possibilité de lier deux chemins? Ou une autre option?

La question précédente J'ai un Grid [20,20] avec TextBox es dedans. Dans ces TextBoxe s je mets des nombres. Lorsque l'application démarre, elle est en plein écran. Si je redimensionne la fenêtre, le Grid avec le TexBox est également redimensionné. Mais le Font reste le même. Donc, je veux changer le FontSize lorsque la fenêtre est redimensionnée. J'ai essayé:

FontSize="{Binding ElementName=aTextBox, Path=Height}" 

entre les balises TextBox. Mais ça ne marche pas. Une liaison avec le Grid ou Window avec la propriété Height ou Width ne fonctionnait pas non plus. Avec la liaison à un curseur, le FontSize change en fonction de la valeur du curseur. Est-ce que quelqu'un a une bonne solution?

Répondre

0

Je viens de faire un test rapide. Si je lie la propriété Text d'un TextBox au Width de la grille contenant le résultat est NaN. Ce serait probablement la raison pour laquelle votre reliure échoue.

Si je lie à la place la propriété FontSize de la propriété TextBox à la propriété ActualWidth, la liaison est OK et redimensionnée avec la grille. La police est énorme cependant. Vous auriez probablement besoin d'un convertisseur pour rendre le FontSize plus petit.

<Grid x:Name="myGrid"> 
     <TextBox Text="Hello" FontSize="{Binding ElementName=myGrid, Path=ActualWidth}"/> 
    </Grid> 
4

La propriété Height est la hauteur initiale de la TextBox. Le ActualHeight représente la hauteur du TextBox tel qu'il est dessiné sur l'écran. Ainsi, votre fixation devient:

<TextBox FontSize="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}, Converter={StaticResource HeightToFontSizeConverter}}" Text="12345" /> 

Notez que j'ai utilisé un convertisseur parce que le rapport Height-FontSize n'est pas 1: 1 et le texte est trop grand pour le TextBox:

class HeightToFontSizeConverter : IValueConverter { 

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { 
    var height = (double) value; 
    return .65 * height; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { 
    throw new NotImplementedException(); 
    } 

} 
Questions connexes