XAML x:将调用函数与params object[]绑定,并传递n个参数

frebpwbc  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(176)

是否可以使用x:Bind调用XAML中的helper函数,该函数接受任意数量的参数?

<Button Content="Button content"
          Margin="0,0,10,0"
          Command="{Binding SomeCommand}"
          IsEnabled="{x:Bind helpers:CommonHelpers.TrueForAll(ViewModel.Property,ViewModel.SomeOtherProperty)}"
          VerticalAlignment="Center"> 
</Button>

其中TrueForAll函数如下所示:
public static bool TrueForAll(params object[] objects) => objects.All(x => x != null);
当尝试在多个参数中使用此函数时,编译器将显示Cannot find a function overload that takes 2 parameters.;当只使用一个参数时,编译器预期使用object[],因此显示Expected argument of type 'Object[]', but found 'MyType'

xlpyo6sf

xlpyo6sf1#

此行为与params关键字有关。x:Bind无法识别您定义的params。它仍在查找具有显式参数列表的方法。
我的建议是你可能需要使用List<object>或者ObservableCollection<object>作为方法的参数,并且在你的ViewModel中创建这样一个属性,这可以被x:Bind接受。

相关问题