我正在尝试创建一个按钮,用于锁定和解锁文本框。当文本框被禁用时,按钮显示一个锁定的图标;当文本框被启用时,按钮显示一个未锁定的锁。
我已经阅读了很多资料,并在此网站上找到了相关问题:WPF更改按钮背景图像
我采用了这个答案,得出了以下内容。
<Button Grid.Row="0" Command="{Binding ChangePnumTextState}" CommandParameter="{Binding ElementName=ButtonCanvas, Path=Source}">
<Canvas Name="ButtonCanvas">
<Canvas.Style>
<Style TargetType="{x:Type Canvas}">
<Style.Triggers>
<DataTrigger Binding="{ Binding IsPNumLocked}" Value="True">
<Setter Property="Source" Value="{StaticResource appbar_lock}" />
</DataTrigger>
<DataTrigger Binding="{ Binding IsPNumLocked}" Value="False">
<Setter Property="Source" Value="{StaticResource appbar_unlock}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
</Canvas>
</Button>
我已经把这批图标http://modernuiicons.com/导入到XAML文件中,需要时就会绘制出来。
我已经找了许多示例,但没有找到如何使用SVG而不是图片的示例。
编辑
好吧,有人指出SVG在WPF中不起作用,我可能只是混淆了名称。这里有一个我在资源库中使用的代码示例,用于获取图标。
<Canvas x:Key="appbar_3d_obj" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
<Path Width="40" Height="40" Canvas.Left="18" Canvas.Top="18" Stretch="Fill" Fill="{DynamicResource BlackBrush}" Data="F1 M 18,21.7037L 43.9259,18L 58,25.4074L 58,54.2963L 32.8148,58L 18,49.1111L 18,21.7037 Z "/>
</Canvas>
我遇到的错误是Visual Studio在Setters和States中下划线标记了Property,并且显示“成员'Source'未被识别或无法访问”。