你不一定需要那个XModelProperty
班级。相反,你使用MultiBinding
将多个枚举值作为命令参数传递。这可能看起来像这样
在您的 XAML 中:
<Button Content="Click me" Command="{Binding DrayStyleItemCommand }">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource MultiValueConverter}">
<Binding Source="{x:Static enums:StyleModes.Somex}" />
<Binding Source="{x:Static enums:StyleModes.Somey}" />
</MultiBinding>
</Button.CommandParameter>
</Button>
创建一个MultiValueConverter
并将其添加为 XAML 中的资源:
public class MultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values.Clone();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后,在您的 ViewModel 中,您可以按如下方式访问枚举
private DelegateCommand<object> _drawStyleItemCommand;
public DelegateCommand<object> DrawStyleItemCommand
{
get { return _drawStyleItemCommand ?? (_drawStyleItemCommand = new DelegateCommand<object>(StyleItem)); }
}
private void StyleItem(object parameter)
{
var values = (object[])parameter;
var enum1 = (StyleModes)values[0];
var enum2 = (StyleModes)values[1];
}