我在Expression Blend 4中创建了一个按钮。我想在运行时动态创建此按钮的实例。
按钮的代码如下:
<Button Content="Button" HorizontalAlignment="Left" Height="139" Margin="46,107,0,0" VerticalAlignment="Top" Width="412" Grid.ColumnSpan="2">
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
除了提供代码之外,你还可以在解释你正在做的事情上发表评论,以便我可以学习一般原则。
我知道这是一个简单的问题所以我一直在阅读诸如Expression blend & WPF,Is there a way to "extract" WPF controls of Expression Blend?和http://social.msdn.microsoft.com/forums/en-US/wpf/thread/ffa981b8-9bba-43a2-ab5e-8e59bc10fc0d/之类的地方,遗憾的是这些都没有帮助。
答案 0 :(得分:1)
在您的WPF应用程序中,您应该有一个App.xaml
文件,在那里您可以添加要在您的UI中使用的Styles
。
示例:
<Application x:Class="WpfApplication8.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<!--The style for all your buttons, setting the background property to your custom brush-->
<Style TargetType="{x:Type Button}"> <!--Indicate that this style should be applied to Button type-->
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
</Application>
或者,如果您不想应用于所有按钮,则可以将Style
Key
提供给您,以便您可以在您的用户界面中应用某些按钮
<Application x:Class="WpfApplication8.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<!--Add a x:Key value so you can use on certain Buttons not all-->
<Style x:Key="MyCustomStyle" TargetType="{x:Type Button}">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
</Application>
要在Style
上使用此Button
,只需将绑定添加到Style
Button
属性
<Button Style="{StaticResource MyCustomStyle}" />
这会将Style
仅应用于此Button
或者如果你真的想在后面的代码中执行它,你可以将你想要的Brush
添加到后台
Button b = new Button
{
Background = new LinearGradientBrush(Colors.Black, Colors.White, new Point(0.5, 1), new Point(0.5, 0))
};
很容易将xaml转换为代码,因为xaml使用完全相同的属性名称,就像我上面发布的代码画笔一样:
new LinearGradientBrush(Colors.Black, Colors.White, new Point(0.5, 1), new Point(0.5, 0))
是......
Brush(firstColor,secondColor,StartPoint EndPoint)
Xaml只是访问按钮中的属性,它们在C#中都具有相同的名称。