2016-12-05 38 views
0

WPF 응용 프로그램이 있는데 기본 레이아웃은 그리드를 기반으로합니다. Column에서 Stackpanel 안에 이미지가 있지만 소스가 너무 큽니다 (수직 방향). 문제는 부모 요소가 끝나는 맨 아래에 잘라낸 것입니다. 창 크기를 조정하면 이미지가 결국 자체적으로 표시되고 가운데에 유지됩니다. 그러나 오른쪽으로 크기를 조정하면 이미지의 크기가 조정되고 부모가 언더 플로합니다.이미지를 원본 가로 세로 비율로 유지하면서 부모 컨트롤이 오버플로되지 않도록하려면 어떻게해야합니까?

셀이 너무 작
  • , 그것은 원래의 화면비
  • 오른쪽에있는 창 크기를 조정하면
  • 이 이미지가 '원 완전히 맞게 늘릴 것 : 나는 그것을 가지고 할 수있는 방법을 찾고 있어요 그것이 적합하지 않다면 크기를 재조정하지 마십시오.

어떻게 든 가능합니까?

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 

    <StackPanel> 
     <Label Margin="10,20,10,0" Content="Name:" /> 
     <TextBox Margin="10,0" Name="nameTextBox" TabIndex="0" FontSize="16" /> 
     <Label Margin="10,20,10,0" Content="Pass:" /> 
     <TextBox Margin="10,0" Name="passTextBox" TabIndex="1" FontSize="16" /> 
     <Image Name="logoImage" Margin="10" Source="pics/icon.png"/> 
    </StackPanel> 
</Grid> 
+1

하지 마십시오 StackPanel을 내부 패널로 사용합니다. 수직으로 크기를 조정하지 않기 때문입니다. 대신 내부 격자를 사용하십시오. – Clemens

답변

0

원하는 것을 원하십니까? enter image description here

<DockPanel> 
    <StackPanel DockPanel.Dock="Top"> 
     <Label Margin="10,20,10,0" Content="Name:" /> 
     <TextBox Margin="10,0" Name="nameTextBox" TabIndex="0" FontSize="16" /> 
     <Label Margin="10,20,10,0" Content="Pass:" /> 
     <TextBox Margin="10,0" Name="passTextBox" TabIndex="1" FontSize="16" /> 
    </StackPanel> 
    <Viewbox Stretch="Uniform" DockPanel.Dock="Bottom"> 
     <Image Name="logoImage" Margin="10" Source="pics/text.png"/> 
    </Viewbox> 
</DockPanel> 

당신은 StackPanel에 항상 내용의 높이로 수직으로 많이 성장할 것 때문에 StackPanel의에서 해당 이미지를 제거해야합니다, 당신은 뷰 박스와 함께 재생할 수 있습니다

+0

이미지 컨트롤이 이미 Stretch 속성을 설정 한 방법에 따라 내용을 확장하기 때문에 ViewBox가 중복됩니다. 기본값은'Stretch.Uniform'입니다. – Clemens

+0

DockPanel도 왼쪽과 오른쪽으로 놓았습니까? Horizontal aligned Stackpanel을 가진 응용 프로그램을 가지고 있는데, 똑같습니다. ( –

+0

내 대답을 받아들이는 Tthanks이지만 ViewBox 이중화에 대한 @Clemmens의 의견을 고려해보십시오. – Tuco