<Style x:Key="ToolBarButton" TargetType="{x:Type Button}">
<Setter Property="Control.Background" Value="#00000000"/>
<Setter Property="Control.Width" Value="25"/>
<Setter Property="Control.Height" Value="25"/>
</Style>
...
<Grid HorizontalAlignment="Left">
<Button Style="{StaticResource ToolBarButton}"/>
<Button Style="{StaticResource ToolBarButton}"/>
<Button Style="{StaticResource ToolBarButton}"/>
<Button Style="{StaticResource ToolBarButton}"/>
<Button Style="{StaticResource ToolBarButton}"/>
<Button Style="{StaticResource ToolBarButton}"/>
</Grid>
我想优化我的XAML代码。我不想为每个按钮分配一个样式,但我希望每个按钮都有我的风格。
有可能做这样的事吗?只有工作......:)
<Grid x:Name="gToolBar" Grid.Row="1" HorizontalAlignment="Left" Style="{StaticResource ToolBarButton}">
<Button/>
<Button/>
<Button/>
<Button/>
<Button/>
<Button/>
</Grid>
我不仅仅使用TargetType,因为我有其他不同风格的按钮。 我认为它可用,但我不知道如何。
...谢谢
答案 0 :(得分:1)
正如我已经说过评论中要做的所有事情,但需要进一步澄清:
我想优化我的XAML代码。我不想为每个按钮指定一个样式,但我希望每个按钮都有我的风格。
将Style
部分移至 App.xaml 文件中的<Application.Resources>
,如下所示:
<Application.Resources>
<Style TargetType="Button" >
<Setter Property="Control.Background" Value="#00000000"/>
<Setter Property="Control.Width" Value="25"/>
<Setter Property="Control.Height" Value="25"/>
</Style>
</Application.Resources>
注意:我已删除x:Key
部分。现在这将适用于应用程序中的所有按钮。
我不仅使用TargetType,因为我有其他具有不同样式的按钮。我认为它可用,但我不知道如何。
为此,您必须将自定义按钮设为UserControl
,从而使它们与通常的Button
完全不同。在他们自己的UserControl.Resources
中为他们应用样式。因此App.Resources
中提到的样式不会影响这些自定义 UserControls
答案 1 :(得分:0)
您应该使用应用程序资源来执行此操作。将此代码添加到那里(app.xaml
):
<Application.Resources>
<Style TargetType="Button" >
<Setter Property="Control.Background" Value="#00000000"/>
<Setter Property="Control.Width" Value="25"/>
<Setter Property="Control.Height" Value="25"/>
</Style>
</Application.Resources>
<强>更新强>
或者,如果您希望此样式仅应用于应用程序的某些部分,例如一些特殊的“网格”和“网格”。或特殊Window
...,只需将其放在该元素的Resource
内:
<Grid>
<Grid.Resources>
<Style TargetType="Button" >
<Setter Property="Control.Background" Value="#00000000"/>
<Setter Property="Control.Width" Value="25"/>
<Setter Property="Control.Height" Value="25"/>
</Style>
</Grid.Resources>
... inside code, and your buttons which we eant to apply style for them.
</Grid>
答案 2 :(得分:0)
您可以为网格中的按钮创建默认样式:
<Window ...>
<Window.Resources>
<Style x:Key="ToolBarButton" TargetType="{x:Type Button}">
<Setter Property="Control.Background" Value="#00000000"/>
<Setter Property="Control.Width" Value="25"/>
<Setter Property="Control.Height" Value="25"/>
</Style>
</Window.Resources>
<Grid HorizontalAlignment="Left">
<Grid.Resources>
<Style x:Key="{x:Type Button}" BasedOn="{StaticResource ToolBarButton}" TargetType="{x:Type Button}"></Style>
</Grid.Resources>
<Button />
<Button />
<Button />
<Button />
<Button />
<Button />
</Grid>
</Window>
如果在容器中创建使用控件类型作为键的资源,则该样式将应用于容器中该类型的所有控件。如果您想在其他地方定义原始样式(例如,因为您在许多地方使用它),您可以将本地样式基于全局样式。