Xamarin Forms - CommandParameter - 如何通过 XAML 传递自定义对象?

GIV*_*KEN 4 c# xamarin.forms

我在视图模型中有一个名为 的命令Add,它当前接受一个名为 的参数Result。我现在需要将更多数据传递到命令中,这就是控件IsToggled的属性值Switch

所以如果我有以下课程:

public class ResultData
{
    public string Result { get; set; }
    public bool IsToggled { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

以及相关 XAML 的片段:

 <Switch IsToggled="false" ThumbColor="Black" OnColor="LimeGreen" HorizontalOptions="End" VerticalOptions="Center" >
    <Switch.Behaviors>
         <behaviours:EventToCommandBehavior EventName="Toggled"                                                            
           Command="{Binding BindingContext.Add, Source={x:Reference 
              MyPageContent}}" 
           CommandParameter="{Binding Result}" />
    </Switch.Behaviors>
 </Switch>
Run Code Online (Sandbox Code Playgroud)

传递Result&IsToggled使用 的XAML 语法是什么CommandParameter?如果您觉得这不是正确的方法,我愿意接受其他方法。

小智 5

您只需将开关 BindingContext 设置为 Result 并将开关作为参数传递给 CommandParameter,即可从该参数中获取开关的任何属性。

<Switch IsToggled="false" ThumbColor="Black" OnColor="LimeGreen" HorizontalOptions="End" VerticalOptions="Center" BindingContext="{Binding Result}" x:Name="switch">
    <Switch.Behaviors>
         <behaviours:EventToCommandBehavior EventName="Toggled"                                                            
           Command="{Binding BindingContext.Add, Source={x:Reference 
              MyPageContent}}" 
           CommandParameter="{Binding Source={x:Reference switch}}" />
    </Switch.Behaviors>
</Switch>
Run Code Online (Sandbox Code Playgroud)