【问题标题】:Adding Command to Checkbox in listview xamarin将命令添加到列表视图 xamarin 中的复选框
【发布时间】:2020-09-10 11:48:50
【问题描述】:

我在 Xamarin 表单中有一个列表视图,我试图在每一行中添加一个复选框,并附有一个命令。

我尝试了一些方法,但还没有成功,因为我无法获得绑定的 ID。

我已经尝试过的事情是:

  • 在复选框中添加CheckedChanged参数,我只能得到truefalse,但不能得到这个项目。
<CheckBox VerticalOptions="End" x:Name="Checkbox" IsChecked="{Binding IsBought, Mode=TwoWay}" WidthRequest="100" CheckedChanged="Checkbox_CheckedChanged"/>
  • 尝试使用GestureRecognizersCommandParameter,这甚至不会调用附加到它的函数。我用TappedCommand 试过这个,也许我需要用Binding 来执行命令?
<CheckBox VerticalOptions="End" x:Name="Checkbox" IsChecked="{Binding IsBought, Mode=TwoWay}" WidthRequest="100" CheckedChanged="Checkbox_CheckedChanged">
  <CheckBox.GestureRecognizers>
    <TapGestureRecognizer Command="TapGestureRecognizer_Tapped" CommandParameter="{Binding ArtikelID}"/>
  </CheckBox.GestureRecognizers>
</CheckBox>

我希望你能进一步帮助我:) 祝你有美好的一天

【问题讨论】:

    标签: c# xaml xamarin mvvm


    【解决方案1】:

    使用senderBindingContext

    void OnCheckBoxCheckedChanged(object sender, CheckedChangedEventArgs e)
    {
        var cb = (CheckBox)sender;
        var item = (MyModel)cb.BindingContext;
        var id = item.ArtikelID;
    }
    

    【讨论】:

    • 我不得不放置列表使用的类,而不是 MyModel。谢谢!
    【解决方案2】:

    据我了解,您的 ViewModel 中有一个命令属性,并且您希望将每个复选框的命令绑定到 ViewModel 中的该命令,并将该项作为参数传递。

    在您的情况下,您必须为该绑定指定 DataContext,因为它指向该列表中的项目。

    使用 RelativeSource 解决您的问题。

    【讨论】:

      猜你喜欢
      • 2018-06-04
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多