wpf之代码设置背景图片
程序员文章站
2024-03-18 22:46:46
...
这里通过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="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"
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>
这里遇到一个坑,就是一直找不到图片,
通过研究发现需要把图片熟悉的资源修改成无,就可以了
如下图:
效果如下: