【问题标题】:How ImageCell "Command property" and "Command Parameter" bind with viewModel?ImageCell“命令属性”和“命令参数”如何与viewModel绑定?
【发布时间】:2015-03-21 00:05:02
【问题描述】:

我正在使用 ImageCell 创建一个 ListView。我想在 ImageCell 单击时执行命令。但是,调试器不会调用 ViewModel 中的命令方法。 (我对按钮命令做同样的事情,这是有效的。)

查看:

    <ListView x:Name="lvLocation" ItemsSource="{Binding LocationList}">   
  <ListView.ItemTemplate>
        <DataTemplate>
          <ImageCell ImageSource="edit.png" Height="40" Text="{Binding StoreName}" Detail="{Binding CityName}" Command="{Binding OnImageListCommand}" CommandParameter="{Binding CityName}"/>         
        </DataTemplate>
      </ListView.ItemTemplate>         
    </ListView>

查看模型:

      public class ClassName: MvvmBaseClass
        {             

            public ICommand OnImageListCommand { get; set; }

            public ClassName()
            {                       
                OnImageListCommand = new Command<string>( OnImageListClick );
            }

            private void OnImageListClick(string _commandParamenter)
            {
                //Write code here.

            }
}

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:

    您的代码看起来不错。 LocationList 中的项目类型是什么?确保LocationList 包含ClassName 类型的项目

    ImageCell 将从 lvLocation 的 ItemSource 继承 BidningContext

    【讨论】:

    • 这里,LocationList 是一个类类型的集合。 ImageCell 文本和详细信息属性已成功绑定,但命令和命令属性未与我在其视图模型中创建的 Icommand 绑定。不知道为什么,你有解决办法吗?
    • command 绑定到集合中的项目,而不是父对象。因此,您的 OnImageListCommand 需要位于集合中的每个项目上,而不是 ViewModel 中。这是我目前正在努力解决的问题,我不喜欢在集合中的每个对象上都有一个 Command 的想法。
    猜你喜欢
    • 2021-05-12
    • 2011-09-28
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多