【问题标题】:create templated button in wpf with different properties在 wpf 中创建具有不同属性的模板按钮
【发布时间】:2016-01-30 18:00:18
【问题描述】:

我创建了一个自定义按钮。我需要更多具有不同背景的相同样式的按钮。可以通过为每个按钮创建模板来做到这一点。但这消除了代码的可重用性。是否可以为所有按钮应用相同的模板,但对背景等属性进行一些更改。 这是我的代码。

        <ControlTemplate x:Key="custom-button" TargetType="Button">
            <Grid x:Name="btn_image">
                <Image Name="btnBackground" Source="Media/Knob Red.png"></Image>
            </Grid>
            <ControlTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=IsRunning}" Value="false">
                    <Setter TargetName="btnBackground" Property="Source" Value="Media/Knob Play.png"></Setter>
                </DataTrigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>

这是我应用模板的按钮。

<Button Name="start" Template="{StaticResource  custom-button}"  HorizontalAlignment="Left" Margin="147,67,0,0" VerticalAlignment="Top" Width="37" Height="30" Click="Start_Click">
</Button>

现在我需要为更多按钮使用模板,但它们应该有不同的背景。要改变什么。尝试了很多方法,但没有一个运气。

这些是我的其他按钮。

<Button Template="{StaticResource  custom-button}" Name="reset" HorizontalAlignment="Left" Margin="194,67,0,0" VerticalAlignment="Top" Width="37" Height="30" Click="Reset_Click">
            <Button.Background>
                <ImageBrush ImageSource="Media/Knob Refresh.png"/>
            </Button.Background>
</Button>
 <Button Template="{StaticResource  custom-button}" x:Name="close" HorizontalAlignment="Left" Margin="236,0,0,0" VerticalAlignment="Top" Width="20" Height="18" RenderTransformOrigin="1.771,-1.3" Click="Close">
            <Button.Background>
                <ImageBrush ImageSource="Media/Knob Purple.png"/>
            </Button.Background>
</Button>

【问题讨论】:

    标签: wpf


    【解决方案1】:

    您可以在自定义控件中执行以下操作:

     <Image Name="btnBackground" Source="{TemplateBinding Background}"></Image>
    

    并且在您的按钮声明中,您可以将图像作为背景属性传递。

    【讨论】:

    • 你可以像 background={staticResource ResourceKey=key} 一样。而 key 是 ImageBrush 声明为静态资源的 key。在你的控制中
    猜你喜欢
    • 2013-04-02
    • 2013-08-04
    • 2019-09-28
    • 2010-12-30
    • 2021-12-15
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多