2012-06-14 2 views
0

배율을 적용하지 않고 Grid의 열과 행을 변환 할 수 있습니까?WPF : 배율을 조정하지 않고 배율을 조정

크기 조정없이 셀에 맞게 각 셀의 내용을 간단하게 조정하고 싶습니다 (예 : 텍스트의 글꼴 크기가 동일하게 유지됨).

예를 들어, XAML의 다음 부분에서 나는 규모보다는 크기를 조정하려면 버튼을 원하는 다음이 적용됩니다 변환 때문에 당신이 적용하고있는 방법으로

<Grid Name="grid1" RenderTransformOrigin="0.5, 0.5"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="300" /> 
       <ColumnDefinition Width="300" /> 
       <ColumnDefinition Width="300" /> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="80"/> 
       <RowDefinition Height="80"/> 
      </Grid.RowDefinitions> 
      <Grid.RenderTransform> 
       <ScaleTransform ScaleX="{Binding Value, ElementName=slider1 }" ScaleY="{Binding Value, ElementName=slider1 }" 
           /> 
      </Grid.RenderTransform> 
      <Button Content="Button3" Margin="6" Name="button3" /> 
      <Button Content="Button4" Grid.Column="1" Margin="6" Name="button4" /> 
      <Button Content="Button5" Grid.Column="2" Margin="6" Name="button5" /> 
      <Button Content="Button6" Grid.Column="0" Grid.Row="1" Margin="6" Name="button6" /> 
</Grid> 

답변

0

을이 불가능합니다 모든 자식 컨트롤의 렌더링도 마찬가지입니다.

그러나 코드의 모양에 따라 슬라이더의 위치를 ​​기준으로 표의 열 크기를 조정하려고합니다. 더 쉬운 방법은 모든 열을 Width="*" (각 열의 폭이 같은 각 열의 효과가 있음)으로 설정하고, 변형을 제거하고, 전체적으로 그리드의 너비를 슬라이더에 대신 바인딩하는 것입니다 (조정해야 할 수도 있음). 슬라이더의 범위에 맞게 선택하십시오!).

RenderTransform은 주변 레이아웃에 영향을 미치지 않으며 Width를 변경하기 때문에 RenderTransform과 다른 효과를 나타냅니다. 그게 문제가되고 또 다른 해결책이 있다면 의견을 게시하십시오 ...

+0

고마워요. 그것은 아주 좋은 생각입니다! 그리드 자체는 ScrollViewer 내부에있어 그리드의 다른 영역에 대한 뷰포트를 제공합니다. Grid 컨트롤은 사각형이 아니므로 너비와 높이를 슬라이더에 직접 바인딩 할 수 없습니다. 또한 Transform Origin이 왼쪽 상단으로 설정되어있는 것처럼 스케일이 기능하며 그리드의 중심 (또는 뷰포트의 중심)이 더 좋을 것입니다. xaml에서만 그렇게 할 수 없다고 생각합니다. 그래서 사각형을 계산하고 이것을 바인딩하는 코드 객체를 생성해야합니까? –

+0

비 정사각형 문제 : 직접 바인딩하는 대신 바인더에서 변환기를 사용하여 슬라이더 값에 고정 된 값을 곱할 수 있습니다. 따라서 슬라이더 범위를 1.0에서 2.0으로 만들고 원래의 너비/높이가 무엇이든간에 곱하는 변환기로 바인더를 바인딩하십시오. 여전히 센터링 문제를 해결하지는 못했지만 시작일뿐입니다 :-) –

+0

센터링 문제는 상단 및 왼쪽 속성에 변환기를 적용하는 것일뿐입니다 –

관련 문제