wpf-toolbar

项目中新建文件夹 Images,资源管理器中把图片拷贝进去,项目中图片属性设置 build action 为 Resource do not copy 就可以引用了。

<ToolBarTray DockPanel.Dock="Top">
<ToolBar>
<Button ToolTip="打开测量界面" Name="tb_measurement" Click="tb_measurement_Click">
<StackPanel Orientation="Vertical">
<Image Source="/MRLGauger;component/Images/measure_40.png" />
<TextBlock Margin="0,2,0,0" HorizontalAlignment="Center">测量</TextBlock>
</StackPanel>
</Button>
<Button ToolTip="打开编程界面" Name="tb_program" Click="tb_program_Click">
<StackPanel Orientation="Vertical">
<Image Source="/MRLGauger;component/Images/measure_40.png" />
<TextBlock Margin="0,2,0,0" HorizontalAlignment="Center">编程</TextBlock>
</StackPanel>
</Button>
<Button Command="Save" Content="Save" />
</ToolBar>
</ToolBarTray>

动态切换图标和文字

<Window x:Class="MRLGauger.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:MRLGauger"
mc:Ignorable="d" Loaded="Window_Loaded"
Title="MRLGauger" Height="768" Width="1024" WindowStartupLocation="CenterScreen" Closed="Window_Closed">
<Window.Resources>
<StackPanel x:Key="IMG_Auto" Orientation="Vertical">
<Image Source="/MRLGauger;component/Images/auto_40.png" />
<TextBlock Margin="0,2,0,0" HorizontalAlignment="Center">自动</TextBlock>
</StackPanel>
<StackPanel x:Key="IMG_Manual" Orientation="Vertical">
<Image Source="/MRLGauger;component/Images/manual_40.png" />
<TextBlock Margin="0,2,0,0" x:Name="tb_textBlock_manual" HorizontalAlignment="Center">手动</TextBlock>
</StackPanel>
</Window.Resources>
...


private void tb_auto_Click(object sender, RoutedEventArgs e)
{
// 1 自动(默认), 2 手动
if (measureDisplay.operate_type == 1)
{
measureDisplay.operate_type = 2;
((Button)sender).Content = FindResource("IMG_Manual");
}
else if (measureDisplay.operate_type == 2)
{
measureDisplay.operate_type = 1;
((Button)sender).Content = FindResource("IMG_Auto");
}

tb_textBlock_manual.Text = "文字";

}

设置无效

<Button ToolTip="开始自动测量" Name="tb_start" Click="tb_start_Click">
<StackPanel Orientation="Vertical">
<Image x:Name="img_start" Source="{DynamicResource src_img_start}" />
<TextBlock Margin="0,2,0,0" HorizontalAlignment="Center">工步开始</TextBlock>
</StackPanel>
</Button>

// 设置灰度图
{
ImageSource isource = img_start.Source;
FormatConvertedBitmap fcb = new FormatConvertedBitmap((BitmapSource)isource, PixelFormats.Gray32Float, null, 0);
img_start.Source = fcb;
img_start.OpacityMask = new ImageBrush(isource);
}

// 回复原图
img_start.Source = FindResource("src_img_start") as BitmapImage;