Во-первых, если вы выполняете MVVM, эта информация обычно будет доступна вашей виртуальной машине через отдельные свойства, привязанные к представлению. Это избавляет вас от необходимости передавать какие-либо параметры вашим командам.
Однако вы также можете выполнить множественную привязку и использовать конвертер для создания параметров:
<Button Content="Zoom" Command="{Binding MyViewModel.ZoomCommand">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource YourConverter}">
<Binding Path="Width" ElementName="MyCanvas"/>
<Binding Path="Height" ElementName="MyCanvas"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
В вашем конвертере:
public class YourConverter : IMultiValueConverter
{
public object Convert(object[] values, ...)
{
return values.Clone();
}
...
}
Затем при выполнении вашей команды логика:
public void OnExecute(object parameter)
{
var values = (object[])parameter;
var width = (double)values[0];
var height = (double)values[1];
}