Передача двух параметров команды с использованием привязки WPF

140
задан Iain Smith 9 May 2019 в 10:26
поделиться

1 ответ

Во-первых, если вы выполняете 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];
}
225
ответ дан 23 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: