在XAML中为动态创建的WPF控件设置边距

时间:2011-05-31 15:34:10

标签: wpf xaml dynamic-controls thickness

我有一个WPF,可以在加载表单时动态创建按钮,并将它们添加到已在XAML中声明的StackPanel。我想在StackPanel.Resources中的XAML中完全定义这些按钮的样式。到目前为止,我能够很好地为Style属性执行此操作,但是我在找出问题时遇到的问题是最好的方法。我知道边距是厚度,实际上不能在样式中应用,但必须定义为静态资源并直接应用于Margin属性。有没有办法在不使用代码隐藏的情况下在XAML中执行此操作?

这是我的StackPanel的XAML:

        <StackPanel
            x:Name="_dialogButtons"
            Orientation="Horizontal"
            HorizontalAlignment="Right"
            DockPanel.Dock="Right">

            <StackPanel.Resources>
                <Style
                    TargetType="{x:Type Button}">
                    <Setter
                        Property="MinWidth"
                        Value="75" />
                    <Setter
                        Property="Padding"
                        Value="3" />
                </Style>                    
            </StackPanel.Resources>

        </StackPanel>

谢谢,

麦克

3 个答案:

答案 0 :(得分:4)

你声明“我知道边距是一个厚度,实际上不能用于样式”,这是不正确的。边距可以在XAML中应用,Thickness类型有一个类型转换器,可以将字符串转换为Thickness,允许您按如下方式定义它:

<setter Property="Margin" Value="5,5,5,5"/>

答案 1 :(得分:4)

<StackPanel.Resources>
    <Style
        TargetType="{x:Type Button}">
        <Setter
            Property="MinWidth"
            Value="75" />
        <Setter
            Property="Padding"
            Value="3" />
        <Setter
            Property="Margin"
            Value="3" />
    </Style>                    
</StackPanel.Resources>

答案 2 :(得分:2)

Padding也是Thickness,似乎你可以添加就好了。)。

所以就像Padding一样。