[英]Can't change Button's background image
我的按鈕控制有問題。 當我將鼠標懸停在它上面時,按鈕的圖像丟失了。 但是,當鼠標離開時,圖像會返回。 當鼠標懸停為真時,我想保留圖像。
這是鼠標結束時
這是正常狀態
這是我的代碼
<Button Name="miliage_btn" Canvas.Left="775" Canvas.Top="57" Width="239" Height="80" Click="Button_Click" >
<Button.Background>
<ImageBrush ImageSource="D:\남경현\로드오브다이스 시뮬/pack0.jpg">
</ImageBrush>
</Button.Background>
</Button>
我嘗試這段代碼
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="D:\남경현\로드오브다이스 시뮬/1회뽑기.png"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
可以用xaml或c#修復嗎?
創建控件樣式時,需要考慮一些事項。
首先,在聲明觸發器時,不得直接在控件上設置該觸發器中任何設置器的target屬性(就像您直接分配Button.Background
)。 相反,還必須由“設置員”在“樣式”中設置。 原因在依賴屬性值優先級中進行了說明 。
其次,按鈕的默認ControlTemplate顯示鼠標懸停時的可視覆蓋層,該覆蓋層覆蓋背景。 您應該通過聲明自己的ControlTemplate來替換它。
與其從絕對文件路徑加載圖像,不如考慮將圖像文件添加到Visual Studio項目中(例如,在名為Images的文件夾中),並將其Build Action設置為Resource
。
<Button Content="Hello">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="Images/StandardBackground.png"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="Images/MouseOverBackground.png"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.