2009-09-13 4 views
1

내 질문에 대한 답을 얻었으나 지금은 FontSize이 한 방향으로 만 크기가 조정되었음을 알았습니다.Grid의 TextBox에서 글꼴 크기 조정

두 경로를 바인딩 할 가능성이 있습니까? 또는 다른 옵션?

이전 질문 Grid [20,20]에 TextBox es가 있습니다. 이 TextBoxe에는 숫자를 넣었습니다. 응용 프로그램이 시작될 때 전체 화면입니다. 창 크기를 조정하면 TexBox이 포함 된 Grid도 크기가 조정됩니다. 그러나 Font은 그대로 유지됩니다. 그래서 창이 바뀔 때 FontSize을 변경하고 싶습니다. 나는 시도했다 :

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

사이의 TextBox 태그. 하지만 그건 효과가 없습니다. 속성이 Height 또는 WidthGrid 또는 Window 바인딩은 작동하지 않습니다. 슬라이더에 바인딩하면 FontSize은 슬라이더 값에 따라 변경됩니다. 아무도 좋은 해결책이 있습니까?

답변

0

방금 ​​테스트했습니다. 속성을 TextBox에 포함 된 표의 Width에 바인딩하면 결과는 NaN입니다. 아마도 바인딩이 실패하는 이유 일 것입니다.

대신 TextBox 속성의 FontSize 속성을 ActualWidth 속성에 바인딩하면 바인딩이 정상이며 격자로 크기가 조정됩니다. 글꼴은 거대하다. FontSize을 작게 만들려면 변환기가 필요할 것입니다.

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

HeightTextBox 속성의 초기 높이이다. ActualHeight은 화면에 그려진대로 TextBox의 높이를 나타냅니다. 그래서 바인딩이된다 : 1 텍스트가 TextBox 너무 큰 : FontSize의 비율이 Height 1 아니기 때문에 내가 변환기를 사용

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

공지 사항

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(); 
    } 

} 
관련 문제