Wpf 在按钮控件的所有实例中设置按钮控件中图像的不同高度

Wpf 在按钮控件的所有实例中设置按钮控件中图像的不同高度,wpf,button,user-controls,Wpf,Button,User Controls,我有一个wpf控件,如下所示: <Button x:Class="myProject.UI.Controls.MyButton" FocusVisualStyle="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"> <Button.Template> <ControlTemplate TargetType="{x:Type Button}">

我有一个wpf控件,如下所示:

<Button x:Class="myProject.UI.Controls.MyButton" FocusVisualStyle="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
<Button.Template>
    <ControlTemplate TargetType="{x:Type Button}">
        <Border x:Name="border" CornerRadius="8" Background="{DynamicResource ResourceKey=BackgroundColor}">
            <DockPanel Margin="3">
                <Viewbox DockPanel.Dock="Left">
                    <Image Height="30" Source="{Binding Path=Tag, RelativeSource={RelativeSource TemplatedParent}}" Margin="5" VerticalAlignment="Center" HorizontalAlignment="Left" />
                </Viewbox>
                <TextBlock DockPanel.Dock="Left" Text="{Binding Path=Content,RelativeSource={RelativeSource TemplatedParent}}" FontSize="{Binding Path=FontSize,RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Center" Padding="10,0,10,0" HorizontalAlignment="Left"/>
                <Image DockPanel.Dock="Right" Source="{DynamicResource ResourceKey=Bmp}" Height="30" Width="30" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0"></Image>
            </DockPanel>
        </Border>
    </ControlTemplate>
</Button.Template>
<controls:MyButton **HeightOfTheFirstImage**="10" FontSize="24" Width="210" Height="60" Foreground="White" Tag="{Binding Source={x:Static properties:Resources.backArrow}, Converter={StaticResource BitmapToImageSourceConverter}}" Content="{DynamicResource BackArrowButton}" Command="{Binding Path=GoToPreviousPage}" Margin="60 0 0 0">
    <Button.Resources>
        <Brush x:Key="BackgroundColor">#005BB5</Brush>
    </Button.Resources>
</controls:ImageButton>

在我看来,当我使用它时,我写的是:

<controls:MyButton FontSize="24" Width="210" Height="60" Foreground="White" Tag="{Binding Source={x:Static properties:Resources.backArrow}, Converter={StaticResource BitmapToImageSourceConverter}}" Content="{DynamicResource BackArrowButton}" Command="{Binding Path=GoToPreviousPage}" Margin="60 0 0 0">
    <Button.Resources>
        <Brush x:Key="BackgroundColor">#005BB5</Brush>
    </Button.Resources>
</controls:ImageButton>

#005BB5
问题是,在我的项目中有几个这个按钮的实例。在某些情况下,第一个图像(在viewbox中)的高度应为30,而在某些情况下,第一个图像的高度应为10

如何根据按钮的每个实例设置第一个图像的高度?例如,像这样:

<Button x:Class="myProject.UI.Controls.MyButton" FocusVisualStyle="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
<Button.Template>
    <ControlTemplate TargetType="{x:Type Button}">
        <Border x:Name="border" CornerRadius="8" Background="{DynamicResource ResourceKey=BackgroundColor}">
            <DockPanel Margin="3">
                <Viewbox DockPanel.Dock="Left">
                    <Image Height="30" Source="{Binding Path=Tag, RelativeSource={RelativeSource TemplatedParent}}" Margin="5" VerticalAlignment="Center" HorizontalAlignment="Left" />
                </Viewbox>
                <TextBlock DockPanel.Dock="Left" Text="{Binding Path=Content,RelativeSource={RelativeSource TemplatedParent}}" FontSize="{Binding Path=FontSize,RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Center" Padding="10,0,10,0" HorizontalAlignment="Left"/>
                <Image DockPanel.Dock="Right" Source="{DynamicResource ResourceKey=Bmp}" Height="30" Width="30" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0"></Image>
            </DockPanel>
        </Border>
    </ControlTemplate>
</Button.Template>
<controls:MyButton **HeightOfTheFirstImage**="10" FontSize="24" Width="210" Height="60" Foreground="White" Tag="{Binding Source={x:Static properties:Resources.backArrow}, Converter={StaticResource BitmapToImageSourceConverter}}" Content="{DynamicResource BackArrowButton}" Command="{Binding Path=GoToPreviousPage}" Margin="60 0 0 0">
    <Button.Resources>
        <Brush x:Key="BackgroundColor">#005BB5</Brush>
    </Button.Resources>
</controls:ImageButton>

#005BB5

可以尝试将viewbox高度设置为Min.height…并将内容拉伸左右


这可能会有帮助

我看到了这个
myProject.UI.Controls.MyButton
,这意味着您的按钮有自己的自定义类,因此您可以始终添加一些属性,例如
FirstImageHeight
,然后将第一个图像的高度绑定到该属性。使用按钮时,可以根据需要设置该属性。