画像とテキストを含むボタンが必要です。それを と呼びましょうMyButton
。ボタンの色、画像の位置、テキストの位置、画像のサイズ、フォントサイズは、表示されるたびに変わりMyButton
ません。ただし、画像ソースとテキストは毎回異なります。最後に、ボタンの不透明度を無効にすると 0.2 に設定し、有効にすると 1 に戻す必要があります。
これまでの私のアプローチ (より良い方法があれば修正してください) は、Button
クラスを継承するコード ビハインドを含む XAML ファイルを作成することです。私の 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 プロパティを宣言するだけで済みます。
これは今のところ問題なく動作しますが、ボタンが有効/無効になっているときに不透明度を設定するのに問題があります。私はコンバーターを試しましたが、あまり運がありませんでした。助言がありますか?
ありがとう