这里通过ImageBrush来实现背景图片
我这里写了个demo,通过鼠标点击事件,来修改背景图片
using Common;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Media;using System.Windows.Media.Imaging;namespace MvvmImageBrush{public class MainWindow_Vm: ObservableObject{bool m_ArrowImageDown = true;ImageBrush _ArrowImageBrush;public ImageBrush ArrowImageBrush{get{return _ArrowImageBrush;}set{UpdateProperty(ref _ArrowImageBrush, value);}}public DelegateCommand _CmdClick => new DelegateCommand(CmdClick);private void CmdClick(object obj){if (true == m_ArrowImageDown){ImageBrush imageBrush = new ImageBrush{ImageSource = new BitmapImage(new Uri("arrow_up.png",UriKind.Relative))};ArrowImageBrush = imageBrush;}else{ImageBrush imageBrush = new ImageBrush{ImageSource = new BitmapImage(new Uri("arrow_down.png",UriKind.Relative))};ArrowImageBrush = imageBrush;}m_ArrowImageDown = !m_ArrowImageDown;}}}
<Window x:Class="MvvmImageBrush.MainWindow"xmlns="/winfx//xaml/presentation"xmlns:x="/winfx//xaml"xmlns:d="/expression/blend/"xmlns:mc="/markup-compatibility/"xmlns:local="clr-namespace:MvvmImageBrush"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><Style x:Key="NoMouseOverButtonStyle" TargetType="{x:Type Button}"><Setter Property="BorderThickness" Value="1"/><Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/><Setter Property="HorizontalContentAlignment" Value="Center"/><Setter Property="VerticalContentAlignment" Value="Center"/><Setter Property="Padding" Value="1"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Button}"><Border x:Name="Chrome" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"><ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/></Border></ControlTemplate></Setter.Value></Setter></Style></Window.Resources><Grid><Button Style="{StaticResource NoMouseOverButtonStyle}" Width="22" Height="22" Command="{Binding _CmdClick}" Background="{Binding ArrowImageBrush,UpdateSourceTrigger=PropertyChanged}">1111</Button></Grid></Window>
这里遇到一个坑,就是一直找不到图片,
通过研究发现需要把图片熟悉的资源修改成无,就可以了
如下图:
效果如下: