ボタンの背景画像を他の画像に変更しようとしていますが、エラーが発生しました。これは私が私のxamlに持っているコードです:
<Button x:Name="Button1" Width="200" Height="200" Content="Button1" Margin="0,0,0,400">
<Button.Background>
<ImageBrush **ImageSource ="Images/AERO.png"** ></ImageBrush>
</Button.Background>
</Button>
そして私のcs:
private void Button1_Click_1(object sender, RoutedEventArgs e)
{
var brush = new ImageBrush();
brush.ImageSource = new BitmapImage(new Uri("Images/AERO.png"));
Button1.Background = brush;
}
私のxamlでのエラーは、「ファイル 'Images\logo.png'がプロジェクトの一部ではないか、その 'ビルドアクション'プロパティが 'リソース'に設定されていません。誰かが説明を手伝ってくれますか、ありがとう
ビルドアクションでは、画像ファイルをコンテンツまたはリソースとしてマークできます。 ImageBrushで画像を使用するための構文は、選択した画像によって異なります。
これはcontentとマークされた画像ファイルです。
ボタンの背景をこの画像に設定するには、次のコードを使用します。
var brush = new ImageBrush();
brush.ImageSource = new BitmapImage(new Uri("Images/ContentImage.png",UriKind.Relative));
button1.Background = brush;
これはresourceとマークされた画像ファイルです。
ボタンの背景をリソース画像に設定するには、次のコードを使用します。
Uri resourceUri = new Uri("Images/ResourceImage.png", UriKind.Relative);
StreamResourceInfo streamInfo = Application.GetResourceStream(resourceUri);
BitmapFrame temp = BitmapFrame.Create(streamInfo.Stream);
var brush = new ImageBrush();
brush.ImageSource = temp;
button1.Background = brush;
以下のコードスニペットを提供し、コードスニペットで言及されているスタイルをボタンまたはトグルボタンに割り当てます。その後、変更された背景をXAMLで完全に制御します。他のコーディングは必要ありません。私はすべてのコードを提供しているのではなく、背後にあるロジックを理解しようとしています;)
<Style x:Key="KeyStopButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border TextBlock.Foreground="{TemplateBinding Foreground}"
x:Name="Border"
CornerRadius="1"
BorderThickness="1">
<Border.Background>
<ImageBrush ImageSource= "..\Images\ButtonImages\StopButton.png" Stretch="Uniform"/>
</Border.Background>
<Border.Effect>
<DropShadowEffect/>
</Border.Effect>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="Border" Property="Border.Effect" Value="{x:Null}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="KeyPlayPauseButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border TextBlock.Foreground="{TemplateBinding Foreground}"
x:Name="Border"
CornerRadius="1"
BorderThickness="1">
<Border.Background>
<ImageBrush ImageSource= "..\Images\ButtonImages\PlayButton.png" Stretch="Uniform"/>
</Border.Background>
<Border.Effect>
<DropShadowEffect/>
</Border.Effect>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="true">
<Setter TargetName="Border" Property="Border.Background">
<Setter.Value>
<ImageBrush ImageSource= "..\Images\ButtonImages\PauseButton.png" Stretch="Uniform"/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
含まれていない場合は、プロジェクトに「Image\Logo.png」ファイルを含めます。次に、そのファイルのプロパティタブにアクセスして(右クリック)、ビルドアクションを「リソース」に設定します。
また、ボタンのClickハンドラーで何をしようとしているのかわかりません。 XAMLで既に背景画像を設定しています。 Clickハンドラーで別の画像に設定しない限り、そのコードは必要ありません。