2016-03-29 7 views
1

実際には基本GridColumnDefinitionの幅が*に設定されていると、その中に含まれるボタンのハードコードされた幅属性は無視され、これらの子要素は切り捨てられます。それらは、Autoに設定された幅でクリップされません。グリッドでWPFのClipToBoundsが無視される

ColumnDefinitionに正しいMinWidthが設定されている場合、このクリッピングが防止されますが、これは正確には動的ではありません。

私は間違ったことをしていますか、これは最高のWPFが提供しているのでしょうか?

enter image description here

enter image description here

マークアップ次のようになります。私は余裕があるときに最初の画像ごとに表示されるように、ボタンを好きで、画像3のようになり

<Grid ShowGridLines="True" ClipToBounds="False"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition></ColumnDefinition> 
      <ColumnDefinition></ColumnDefinition> 
      <ColumnDefinition></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
      <Button Grid.Column="0" Width="120">AAAAA</Button> 
      <Button Grid.Column="1" Width="120">BBBB</Button> 
      <Button Grid.Column="2" Width="120">CCCCC</Button> 
    </Grid> 

何もありません(つまり、いかなる状況下でもクリッピングはありません)。

enter image description here

+0

ウィンドウが最小化されたときに実行するための図を追加できますか?ボタンは常に120幅ですか、またはウィンドウのサイズを変更して縮小したいのですか? thx – SWilko

+0

@SWilko更新された質問 – maxp

答えて

1

ああ、私はそれを解決してきました:

キーがColumnDefinitionMinWidth属性です。

<Grid ShowGridLines="True"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition MinWidth="{Binding Path=ActualWidth, ElementName=spLeft }"></ColumnDefinition> 
      <ColumnDefinition MinWidth="{Binding Path=ActualWidth, ElementName=spMid }"></ColumnDefinition> 
      <ColumnDefinition MinWidth="{Binding Path=ActualWidth, ElementName=spRight }"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <StackPanel Background="Red" Grid.Column="0" Name="spLeft" HorizontalAlignment="Center"> 
      <Button Width="120">AAAAA</Button> 
     </StackPanel> 
     <StackPanel Background="Green" HorizontalAlignment="Center" Grid.Column="1" Name="spMid"> 
      <Button Width="120">BBBB</Button> 
     </StackPanel> 
     <StackPanel Background="Blue" Name="spRight" Grid.Column="2" HorizontalAlignment="Center"> 
      <Button Width="120">CCCCC</Button> 
     </StackPanel> 
    </Grid> 
0

ただ、グリッドにのminWidthを追加します。次のように

<Grid ShowGridLines="True" ClipToBounds="False" MinWidth="360"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
     <Button Grid.Column="0" Width="120">AAAAA</Button> 
     <Button Grid.Column="1" Width="120">BBBB</Button> 
     <Button Grid.Column="2" Width="120">CCCCC</Button> 
</Grid> 
+0

こんにちはアルノー、答えに感謝します。私は文字通り 'minwidth'をハードコードする必要のない動的なアプローチを探していました。この解決策の私の答えを見てください。 – maxp

+0

こんにちはMaxp、技術的にはこれは正しい答えですが、あなたが表現していなかったことが欲しいと思っています。プラスとにかくMinWidthが答えです。 –

関連する問題