我需要一个带有图像和一些文本的按钮,让我们称之为MyButton
。每次MyButton
显示时,按钮颜色、图像位置、文本位置、图像大小和字体大小保持不变。但是,图像源和文本每次都会有所不同。最后,按钮的不透明度需要在禁用时设置为 0.2,在启用时设置回 1。
到目前为止,我的方法(如果有更好的方法,请纠正我)是创建一个 XAML 文件,其中包含继承Button
该类的代码。我的 XAML 类似于:
<Button x:Class="MyButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<!--Blank template for a flat borderless button-->
<Button.Template>
<ControlTemplate TargetType="Button"/>
</Button.Template>
<Grid Background="#F2F2F2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Name="ImgControl" Width="32" Height="32" Grid.Column="0"/>
<TextBlock Name="Label" VerticalAlignment="Center" Grid.Column="1"/>
</Grid>
</Button>
和后面的代码:
Partial Public Class MyButton
Inherits Button
Private _imgSrc As String
Public Property ImageSource As String
Get
Return _imgSrc
End Get
Set(value As String)
_imgSrc = value
Dim imgUri As New Uri(_imgSrc, UriKind.RelativeOrAbsolute)
ImgControl.Source = New BitmapImage(imgUri)
End Set
End Property
Public Property ButtonText As String
Get
Return Label.Text
End Get
Set(value As String)
Label.Text = value
End Set
End Property
End Class
所以每当我在 XAML 中使用它时,我只需要声明按钮、ImageSource 和 ButtonText 属性。
到目前为止这工作正常,但我在启用/禁用按钮时设置不透明度时遇到问题。我试过转换器,但运气不佳。有什么建议么?
谢谢