2014-09-30 75 views
1

我有一个使用MVVM Light的通用应用程序的工作解决方案。 它看起来服用点是这样的:带有使用MVVM Light的Android按钮的ListboxItem

   <Grid x:Name="grdInfo"> 
        <ListBox ItemsSource="{Binding TheEntries}"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="*" /> 
             <ColumnDefinition Width="100"/> 
            </Grid.ColumnDefinitions> 
            <TextBlock Text="{Binding TheInfo}" /> 
            <Button Grid.Column="1" Content="Start Action" 
            Command="{Binding DataContext.TheActionCommand, ElementName=grdInfo}" 
           CommandParameter="{Binding}" /> 
           </Grid> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 
       </Grid> 

后面的代码看起来是这样的:

RelayCommand<SomeItemType> rC = new RelayCommand<SomeItemTyp>(HandleThis); 

    private void HandleThis(SomeItemType TheItem) { 
     ... 
    } 

如何(如果甚至有可能)可以这样与Android(进一步使用MVVM光)

+0

绑定部分? – 2014-09-30 17:11:23

+0

@Derek:是的 - 我忘了提及 - 我正在使用Xamarin。 所以我用C#编写代码。 – ManniAT 2014-09-30 17:37:41

+0

如果你想了解更多细节,请告诉我,我不确定你的意思是一般的还是收集的。 – 2014-09-30 19:08:11

回答

0
完成

在Android上,如果你不使用某种绑定,你会这样做manually

更新:

看来MvvmLight有bindings扩展方法,extension method source

this.AddBinding(
      () => Vm.Hello, 
      () => MyButton.Text); 

     MyButton.AddCommand(
      "Click", 
      Vm.IncrementCommand); 

更先进的绑定:

使用从MvvmCross绑定:videocode

使用Xamarin.Forms,绑定支持内置,使用代码或XAML。

自己动手,看看QuickCross,它的确很简单。

+0

由于您提到了不同于我使用的框架(MVVMLight)的框架 - 这是否意味着MVVMLight不支持我所要求的? – ManniAT 2014-09-30 22:18:10

+0

我不正确,我没有意识到Laurent为此添加了一些东西。 http://blog.galasoft.ch/posts/2014/05/mvvm-light-v4-4-with-xamarin-android-support/ – 2014-10-01 15:05:27