WPF Usercontrol中的边距

时间:2014-07-31 07:16:41

标签: wpf user-controls styles margin

<Style x:Key="MyControl" TargetType="UserControl">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Grid>
                    <Path Style="{StaticResource PathA}"/>
                    <Path Margin="8" Style="{StaticResource PathB}" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

在这种usercontrol风格中,我将path置于另一个path后面,margin为8。

如果我创建一个usercontrol / height足够大的width,那么就可以了。

问题是,如果大小接近或低于8,PathB将会缩小。

我知道推动margin的{​​{1}}。不是PathB margin中的相对值吗?如果我想在usercontrolPathA之间保留一点空间,即使在调整大小时,我该如何处理呢?

size large enough

size small enough

在第二张照片中,橙色馅饼丢失了,因为它的边缘缩小了。

1 个答案:

答案 0 :(得分:2)

您可以定义网格或路径甚至用户控件的最小宽度和高度。

<Style x:Key="MyControl" TargetType="UserControl">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Grid MinWidth="12" MinHeight="12">
                    <Path Style="{StaticResource PathA}"/>
                    <Path Margin="8" Style="{StaticResource PathB}" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

或者可能在这里使用ViewBox

<Style x:Key="MyControl" TargetType="UserControl">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Viewbox>
                    <Grid>
                        <Path Style="{StaticResource PathA}"/>
                        <Path Margin="8" Style="{StaticResource PathB}" />
                    </Grid>
                </Viewbox>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

ViewBox将在重新调整内容大小的同时保持比例不变