【问题标题】:Setting margin in XAML for dynamically created WPF controls在 XAML 中为动态创建的 WPF 控件设置边距
【发布时间】:2011-05-31 15:34:10
【问题描述】:

我有一个 WPF,它在加载表单时动态创建按钮并将它们添加到已在 XAML 中声明的 StackPanel。我想在 StackPanel.Resources 内的 XAML 中完全定义这些按钮的样式。到目前为止,我可以很好地为 Style 属性执行此操作,但我无法弄清楚是做边距的最佳方法。我知道 Margin 是一种厚度,实际上不能应用于样式,但必须定义为静态资源并直接应用于 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>

谢谢,

迈克

【问题讨论】:

  • “我知道 Margin 是一种厚度,实际上不能应用于样式” 这不是真的。
  • 是的,我在那个方面差得很远。我不确定我在想什么,我可能只是对我过去遇到的另一个问题感到困惑,该特定属性在样式中的功能与其他属性的功能不同。

标签: wpf xaml dynamic-controls thickness


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    <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>
    

    【讨论】:

      【解决方案3】:

      Padding 也是 Thickness,看来您可以添加它就好了 ;)。

      所以只需按照与Padding 相同的方式进行操作即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        • 1970-01-01
        • 2013-06-22
        • 2018-07-31
        • 2017-08-07
        • 1970-01-01
        相关资源
        最近更新 更多