Почему мои панели обрезаются по всему периметру панели, если их размер меньше указанного?

Возможно, название вопроса сбивает с толку.

Сетка с красным прямоугольником - это пример того, как она должна выглядеть.

1239] Сетка с синим прямоугольником (не отображаемая на изображении) имеет поле, которое заставляет вторую сетку быть меньше, чем я явно установил. Это, кажется, заставляет WPF разворачиваться и скрывать все, что находится за пределами установленных границ.

enter image description here

Я попытался установить размер Clip больше, чем Grid.

Единственный способ, которым я ' Мы смогли избежать этого, так как написали настраиваемую панель, которая измеряет дочерние элементы с ограничением PositiveInfinity, но затем размещает дочерние элементы с правильной шириной. У этого метода много проблем. Нехорошо лгать своим детям.

В любом случае, вот код:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="NegativeMarginTooMuchClipping.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640"
Height="400">

<Grid>
    <StackPanel Width="600" Height="300">
    <Grid Margin="40,50,60,50" Background="#FFB8B8B8" Width="500" Height="50">
        <Rectangle Fill="Red" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Width="50" Margin="0,-50,0,0"/>
    </Grid>
    <Grid Margin="40,50,61,50" Background="#FFB8B8B8" Width="500" Height="50">
        <Rectangle Fill="Blue" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Width="50" Margin="0,-50,0,0"/>
    </Grid>
    </StackPanel>
</Grid>

Известная проблема? Я что делаю неправильно? Нужны дополнительные пояснения?

5
задан chrislarson 27 April 2011 в 21:21
поделиться