我缩小了我希望我的wpf按钮看起来像使用XAML。
现在我想创建一个子类按钮控件,我可以重新使用w / out必须写出所有标记
<Button Click="TestGridColumnButton_Click" Background="Transparent" Width="16" Height="16" Margin="0,0,0,0" Padding="0,0,0,0" BorderBrush="{x:Null}">
<Button.Template>
<ControlTemplate>
<Image HorizontalAlignment="Center" VerticalAlignment="Center" Style="{StaticResource SourceStyle}" />
</ControlTemplate>
</Button.Template>
</Button>
如何使用C#设置所有这些属性?
答案 0 :(得分:3)
为按钮创建样式并添加到全局资源字典。
<Application x:Class="TestApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
<ResourceDictionary>
<Style x:Key="MyIconButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Width" Value="16" />
<Setter Property="Height" Value="16" />
<Setter Property="Margin" Value="0,0,0,0" />
<Setter Property="Padding" Value="0,0,0,0" />
<Setter Property="BorderBrush" Value="{x:Null}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Image HorizontalAlignment="Center" VerticalAlignment="Center" Source="buttonImage.jpg"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
使用这样的风格:
<Button Style="{StaticResource MyIconButtonStyle}" Click="Button_Click"/>
答案 1 :(得分:0)
有多种方法可以做到:
[注意:为了这个答案,我假设你在一个简单的窗口中创建一个按钮。]
1)不可重复使用的脏方法是在窗口加载的事件中分配所有属性。通过命名按钮对象,您可以获得对它的引用并为属性赋值,注册事件并分配模板。我假设您遇到模板属性问题。要在代码中创建模板,您可以使用FrameworkElementFactory class(不推荐使用)或使用XamlReader.Load方法。(这是首选方法)。
2)创建一个自定义控件,在generic.xaml文件中为其创建自定义模板。您可以在自定义模板中命名元素,并通过重写OnApplyTemplate方法来检索对它们的引用。然后,您可以创建直接映射到模板中的Image元素的公共属性,或者将Image元素公开为控件中的公共属性。使用此方法,您可以使用公开的属性在C#代码中设置属性。
3)您还可以定义多个样式并在c#代码之间切换。当我们使用JavaScript切换类时,此方法就像在HTML中一样。
希望这有帮助!