我有一个命令,我使用以下标准语法从我的XAML文件执行:
<Button Content="Zoom" Command="{Binding MyViewModel.ZoomCommand}"/>
Run Code Online (Sandbox Code Playgroud)
这很好用,直到我意识到我需要从视图中获取两条信息,以便按照用户期望的方式完成此操作(画布的宽度和高度).
似乎可以将数组作为参数传递给我的命令,但是我没有看到在CommandParameter中指定绑定到我的两个canvas属性的方法:
<Button Content="Zoom"
Command="{Binding MyViewModel.ZoomCommand"
CommandParameter="{Binding ElementName=MyCanvas, Path=Width}"/>
Run Code Online (Sandbox Code Playgroud)
如何将宽度和高度传递给我的命令?使用XAML中的命令似乎不太可能,我需要在代码隐藏中连接一个单击处理程序,以便将此信息传递给我的缩放方法.
可能重复:
使用WPF绑定传递两个命令参数
我有以下层次结构:
abstract class TicketBase
{
public DateTime PublishedDate { get; set; }
}
class TicketTypeA:TicketBase
{
public string PropertyA { get; set; }
}
class TicketTypeB:TicketBase
{
public string PropertyB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的VM中,我有一个List<TicketBase> Tickets.当用户单击我的应用程序上的按钮时,他们希望查看某个属性的先前值列表,例如:
<Button Tag="{x:Type Types:TicketTypeA}"
Command="{Binding ListHistoryCommand}"
CommandParameter="{Binding Tag, RelativeSource={RelativeSource Self}}" />
Run Code Online (Sandbox Code Playgroud)
如您所见,我将我的Tag属性设置为TicketTypeA并将其作为参数传递给我的命令:
private void ListHistory(object o)
{
if (Tickets.Count == 0)
return;
Type ty = o as Type;
ValueHistory = new ObservableCollection<TicketBase>(GetTicketsOfType(ty).Select(t => t)); // <- …Run Code Online (Sandbox Code Playgroud)