2016-04-29 12 views
0

WPFフォームをスクロール可能にするのに苦労しています。フォームはかなり長く、私はユーザーがさらにスクロールできるようにしたい。私がフォームの高さを調整すると、スクロールバーがアクティブになると、すべてのものが動き、コンテンツが小さくなります。どのように私はこれを避けるのですか?私は2枚の写真(前に&の前に)と私のXAMLコードを追加しました。エディタ(ラベル/テキストボックス:C#WPFスクロールバーがコンテンツを変更/移動する

enter image description here

enter image description here

<Window x:Class="RegisterForm.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="1000" Width="700" MinHeight="1000" MinWidth="700"> 

<ScrollViewer 
    VerticalScrollBarVisibility="Visible" 
    CanContentScroll="True"> 





<Grid> 


    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 





     <Label 
     Content="Full Name" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="1" 
     Grid.ColumnSpan="3" 
     Margin="40,0,40,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <Label 
     Content="Gender" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="2" 
     Grid.ColumnSpan="3" 
     Margin="40,0,40,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

     <Label 
     Content="Date of Birth" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="3" 
     Grid.ColumnSpan="3" 
     Margin="40,0,40,0" 
     HorizontalContentAlignment="Left"> 
     </Label> 

     <Label 
     Content="Address" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="4" 
     Grid.ColumnSpan="3" 
     Margin="40,0,40,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <Label 
     Content="Phone Number" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="7" 
     Grid.ColumnSpan="3" 
     Margin="40,0,40,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <Label 
     Content="Phone Number Family" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="8" 
     Grid.ColumnSpan="3" 
     Margin="40,0,0,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <Label 
     Content="E-mail" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="9" 
     Grid.ColumnSpan="3" 
     Margin="40,0,40,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <Label 
     Content="Do you speak english?" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="10" 
     Grid.ColumnSpan="3" 
     Margin="40,0,0,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <Label 
     Content="Education" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="11" 
     Grid.ColumnSpan="3" 
     Margin="40,0,40,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <Label 
     Content="Job Type/Profession" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="12" 
     Grid.ColumnSpan="3" 
     Margin="40,0,0,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <Label 
     Content="Experience" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="13" 
     Grid.ColumnSpan="3" 
     Margin="40,0,40,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <Label 
     Content="Drivers License" 
     FontSize="14" 
     FontWeight="Bold" 
     Grid.Row="14" 
     Grid.ColumnSpan="3" 
     Margin="40,0,40,0" 
     HorizontalContentAlignment="Left"> 
    </Label> 

    <TextBox 
     x:Name="txtFirstName" 
     FontSize="14" 
     Grid.Row="1" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
    </TextBox> 

     <Label 
     Content="First Name" 
     FontSize="12" 
     Grid.Row="1" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <TextBox 
     x:Name="txtLastName" 
     FontSize="14" 
     Grid.Row="1" 
     Grid.Column="5" 
     Grid.ColumnSpan="3" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <Label 
     Content="Last Name" 
     FontSize="12" 
     Grid.Row="1" 
     Grid.Column="5" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <ComboBox 
      x:Name="CBGender" 
      FontSize="12" 
      Grid.Row="2" 
      Grid.Column="3" 
      Grid.ColumnSpan="2" 
      Margin="10,0,0,30" 
      IsEditable="True" 
      IsReadOnly="True" 
      Text="Please Select" 
      FontStyle="Normal"> 
      <ListBoxItem Content="Male" FontStyle="Normal"/> 
      <ListBoxItem Content="Female" FontStyle="Normal"/> 
     </ComboBox> 

     <ComboBox 
      x:Name="CBDOBDay" 
      FontSize="12" 
      Grid.Row="3" 
      Grid.Column="3" 
      Grid.ColumnSpan="1" 
      Margin="10,0,0,30" 
      IsEditable="True" 
      IsReadOnly="True" 
      Text="DD" 
      FontStyle="Normal"> 
     </ComboBox> 

     <ComboBox 
      x:Name="CBDOBMonth" 
      FontSize="12" 
      Grid.Row="3" 
      Grid.Column="4" 
      Grid.ColumnSpan="1" 
      Margin="10,0,0,30" 
      IsEditable="True" 
      IsReadOnly="True" 
      Text="MM" 
      FontStyle="Normal"> 
     </ComboBox> 

     <ComboBox 
      x:Name="CBDOBYear" 
      FontSize="12" 
      Grid.Row="3" 
      Grid.Column="5" 
      Grid.ColumnSpan="1" 
      Margin="10,0,0,30" 
      IsEditable="True" 
      IsReadOnly="True" 
      Text="YY" 
      FontStyle="Normal"> 
     </ComboBox> 

     <TextBox 
     x:Name="txtStreetAddress" 
     FontSize="14" 
     Grid.Row="4" 
     Grid.Column="3" 
     Grid.ColumnSpan="3" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <Label 
     Content="Street Address" 
     FontSize="12" 
     Grid.Row="4" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <TextBox 
     x:Name="txtCity" 
     FontSize="14" 
     Grid.Row="5" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <Label 
     Content="City" 
     FontSize="12" 
     Grid.Row="5" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <TextBox 
     x:Name="txtStateProvince" 
     FontSize="14" 
     Grid.Row="5" 
     Grid.Column="5" 
     Grid.ColumnSpan="3" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <Label 
     Content="State/province" 
     FontSize="12" 
     Grid.Row="5" 
     Grid.Column="5" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <TextBox 
     x:Name="txtPostalZipCode" 
     FontSize="14" 
     Grid.Row="6" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <Label 
     Content="Postal/Zip code" 
     FontSize="12" 
     Grid.Row="6" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <ComboBox 
      x:Name="CBCountry" 
      FontSize="12" 
      Grid.Row="6" 
      Grid.Column="5" 
      Grid.ColumnSpan="3" 
      Margin="10,0,0,30" 
      IsEditable="True" 
      IsReadOnly="True" 
      Text="Please Select" 
      FontStyle="Normal" SelectionChanged="CBCountry_SelectionChanged"> 
     </ComboBox> 


     <Label 
     Content="Country" 
     FontSize="12" 
     Grid.Row="6" 
     Grid.Column="5" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <TextBox 
     x:Name="txtPhone1AreaCode" 
     FontSize="14" 
     Grid.Row="7" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <TextBox 
     x:Name="txtPhone1" 
     FontSize="14" 
     Grid.Row="7" 
     Grid.Column="5" 
     Grid.ColumnSpan="3" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <Label 
     Content="Area Code (ex. +45)" 
     FontSize="12" 
     Grid.Row="7" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <Label 
     Content="Phone Number" 
     FontSize="12" 
     Grid.Row="7" 
     Grid.Column="5" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <TextBox 
     x:Name="txtPhone2AreaCode" 
     FontSize="14" 
     Grid.Row="8" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <TextBox 
     x:Name="txtPhone2" 
     FontSize="14" 
     Grid.Row="8" 
     Grid.Column="5" 
     Grid.ColumnSpan="3" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <Label 
     Content="Area Code (ex. +45)" 
     FontSize="12" 
     Grid.Row="8" 
     Grid.Column="3" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <Label 
     Content="Phone Number" 
     FontSize="12" 
     Grid.Row="8" 
     Grid.Column="5" 
     Grid.ColumnSpan="2" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 

     <TextBox 
     x:Name="txtEmail" 
     FontSize="14" 
     Grid.Row="9" 
     Grid.Column="3" 
     Grid.ColumnSpan="4" 
     Margin="10,0,0,30" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center"> 
     </TextBox> 

     <Label 
     Content="Ex. [email protected]" 
     FontSize="12" 
     Grid.Row="9" 
     Grid.Column="3" 
     Grid.ColumnSpan="3" 
     Margin="10,25,0,0" 
     FontStyle="Italic" 
     HorizontalContentAlignment="Left" 
     HorizontalAlignment="Left"> 
     </Label> 





    </Grid> 

</ScrollViewer> 

//おかげで、ラスマス

答えて

1

ScrollViewerの持つ問題は、それが事実上無限であるということです。したがって、その内部のコンテンツは、*などの相対サイズを計算することはできません。あなたの場合、私はあなたのグリッドに高さを追加すると、<Grid Height="1000">のようなものがうまくいくと思います。

+0

ありがとうたくさんのピコ、私の問題を解決した、私はdidntを推測するすべての位置を変更する必要があります!今は素晴らしい作品です。 – RasmusPaulsen

+0

あなたは大歓迎です:) – Pikoh

1

あなたはHeighまたは少なくとも一部のMinHeighを指定する必要があります/ Comboboxes)またはGridRowsまたはGrid全体を指定します。実のところ、グリッドはウィンドウ内に塗りつぶされ、グリッド全体がグリッド全体でいっぱいになります。通常は

<RowDefinition Height="auto" /> 

代わりの

<RowDefinition Height="*" /> 

にグリッド行の高さを設定し、編集者にminHeightのか、パディングのいくつかの種類を与えるだろう。

多くのソリューションがあります。ラベル/エディターの高さをどのようにしたいかによって異なります。/ADD(ダイナミックまたは固定)

EDIT: そして、ちょうどミニノートとしてあなたがそれらの行優先/及びColumnDefinitionsの同じスタイルのforeachを定義した場合、あなたはおそらくそれらのためのグリッドにスタイルを割り当てる必要があります。 それは、一度に変更する事が容易になり、D

<Grid> 
    <Grid.Resources> 
     <Style TargetType="RowDefinition"> 
      <Setter Property="Height" Value="auto" /> 
     </Style> 
    </Grid.Resources> 

    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 

    <!-- ... --> 


</Grid> 
+0

答えてくれてありがとうFrerk、私はあなたが言っていることを得て、私はそれを試してみるでしょう。私は実際に行の高さを "*"の代わりに "auto"に変更しようとしましたが、すべてが乱雑になりました。私はすべてのポジションを再配置する必要がありますね。 – RasmusPaulsen