我尝试将Button
图标更改为Click_Event
,所以目前我有这样的xaml:
<Button Content="{materialDesign:PackIcon LanDisconnect}" Command="{Binding Connect}" />
在ViewModel中:
public ICommand Connect
{
get
{
_Connect = new RelayCommand(
param => ConnectChip());
return _Connect;
}
}
如何在命令{MaterialDesign:PackIcon LanConnect}
中将按钮图标更改为Connect
?谢谢!
答案 0 :(得分:2)
您可以将Content
的{{1}}属性绑定到您在Button
方法中设置为新值的PackIcon
属性。
<强> XAML:强>
ConnectChip()
查看型号:
<Button Content="{Binding Icon}" Command="{Binding Connect}" />
答案 1 :(得分:1)
虽然一些评论提出了稍微更高级的解决方案(例如使用DataTriggers)。我建议(至少从一开始)你只需要为按钮内容添加一个绑定。然后,您可以向视图模型添加属性,并通过命令更新它。
在您的情况下,您使用的是Material Design内容。
因此,在您的视图模型中,您需要包含一个图标属性:
using MaterialDesignThemes.Wpf;
public PackIconKind IconKind
{
get { return _IconKind; }
set { SetField(ref _IconKind, value); }
}
private PackIconKind _IconKind = PackIconKind.LanDisconnect;
See this reference for the SetField method
然后将按钮XAML更改为:
<Button Command="{Binding MyCommand}" Width="100" Height="32">
<materialDesign:PackIcon Kind="{Binding IconKind}" />
</Button>
这会在按钮中设置图标的绑定。现在,视图模型可以随时更改此Kind
。我更喜欢在构造函数中设置命令。我首先有一个命令属性如下:
public ICommand MyCommand { get; }
并在构造函数中:
MyCommand = new RelayCommand(UpdateIcon);
然后将UpdateIcon方法添加到视图模型中。然后可以从其他地方调用此方法(而不仅仅是按钮命令)。
protected void UpdateIcon()
{
IconKind = MaterialDesignThemes.Wpf.PackIconKind.LanConnect;
}