2016-07-19 7 views
-1
<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 
    <someControl Grid.Column="0"/> 
    <Expander Grid.Row="1" ExpandDirection="Right"/> 
    <Expander Grid.Row="2" ExpandDirection="Right"/> 
</Grid> 

ウィンドウの右側にエクスパンダを開くと、グリッドの列0のコントロールが小さくなります。私は、そのコントロールのサイズを保持して、エキスパンダーが開いたときにウィンドウの右側にもっと多くのスペースを作ってもらいたい。私が右に展開するように設定しているにもかかわらず、展開が左に開いているかのようです。 "SizeToContent"はこれに何ら影響を与えていないようです。エキスパンダーが内側に向かって進んでいますが、どのようにしてウィンドウを大きくすることができますか?

編集:私が想定しているエキスパンダーの場合は、これを垂直にするとこれも同じ "問題"があります。それのまわりで何か?

+0

ウィンドウは、あなたがそれを行うことを期待するものをフルサイズだった場合は? – Paparazzi

+0

フルスクリーンであれば、それ以上の幅が得られないので、それを行うと期待しています。しかし、ウィンドウがフルサイズでない場合、WPFは通常、それをどのように扱うかを知っています。たとえば、3つのエキスパンダーを自動高さで単独で使用すると、ウィンドウのサイズが自動的に変更されます。 – user99999991

答えて

1

Width="*"は、そのコントロールの残りのスペースをすべて使用するようにWPFに指示しますが、大きくても小さくてもかまいません。ウィンドウが展開される唯一の方法(SizeToContent="Width")は、コントロールがこれ以上列に収まらない場合です。

ウィンドウに対してはWidthを省略して、できるだけ小さい幅で初期化するか、または特定のサイズを超えて縮小しないようにするためにMinWidthを使用します。最初のアプローチの

サンプル(私はいくつかの無関係な部分を削除):

<Window Title="MainWindow" SizeToContent="Width" Height="300"> 
    <Grid> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Grid.Column="0" Text="asdf asdf asdf asdf asdf asdf asdf asdf asdf "/> 
      <Expander Grid.Column="1" ExpandDirection="Right"> 
       <Button VerticalAlignment="Top">Test 1</Button> 
      </Expander> 
      <Expander Grid.Column="2" ExpandDirection="Right"> 
       <Button VerticalAlignment="Top">Test 2</Button> 
      </Expander> 
     </Grid> 
    </Grid> 
</Window> 
+0

私が見ている問題は、2つのエキスパンダーのいずれかを開くと、TextBlock(または私の場合はコントロール)が開き、幅が小さくなるということです。代わりに、私はウィンドウの幅を広げたい。どんな設定でもSizeToContentは私の使用で何が起こるかを変えません。 – user99999991

+0

奇妙な、私はそのような動作を見ていないよ。私の例のコードを試したことがありますか?まずTextBlockを使用してから、あなたのコントロールに置き換えようとしましたか? – vesan