C# 在WPF应用程序中,如何在XAML文件中添加或访问变量?

C# 在WPF应用程序中,如何在XAML文件中添加或访问变量?,c#,wpf,xaml,C#,Wpf,Xaml,我想坚持干燥原则,所以我在一个网格中有大约20个按钮,它们都有相同的边距,它们看起来像这样: 我想添加一个名为ButtonMargin的变量,将其设置为3,然后将每个按钮的边距设置为ButtonMargin,因为如果将来我想用这种方式更改它,我将只更改一个变量,而不是20个 我尝试在.cs文件字符串ButtonMargin中包含一个实际变量;并在构造函数中将其设置为3,但在XAML文件中写入Margin=ButtonMargin或Margin=this.ButtonMargin时,会出现无效的标

我想坚持干燥原则,所以我在一个网格中有大约20个按钮,它们都有相同的边距,它们看起来像这样:

我想添加一个名为ButtonMargin的变量,将其设置为3,然后将每个按钮的边距设置为ButtonMargin,因为如果将来我想用这种方式更改它,我将只更改一个变量,而不是20个

我尝试在.cs文件字符串ButtonMargin中包含一个实际变量;并在构造函数中将其设置为3,但在XAML文件中写入Margin=ButtonMargin或Margin=this.ButtonMargin时,会出现无效的标记错误


如何正确执行此操作?

WPF已经为此提供了内置功能。这叫做造型

为按钮创建样式,并定义要具有相同值的所有特性

像这样:

<Grid>
    <Grid.Resources>
        <Style TargetType="Button">
            <Setter Property="Margin" Value="2"/>
        </Style>
    </Grid.Resources>

    <Button/>
    <Button/>
</Grid>

现在,该网格中的所有按钮都将获得相同的边距。

谢谢!为什么在本例中是Grid.Resources而不是本文中的Grid.Style?请仔细阅读那篇文章。通过在资源中放置样式,可以定义将应用于定义资源的FrameworkElement的所有子级的通用样式。通过直接应用样式,只能指定该混凝土框架图元的样式。有关使用样式的信息,请参见标记的重复。请注意,您也可以像尝试过的那样使用变量以编程方式执行此操作,但需要获得正确的标记:源值需要来自属性,需要使用{Binding}标记,并且需要在绑定标记中引用对象及其属性。