I have a command on a ViewModel which I use to navigate to a details page
public class InstalledMetersListViewModel : MvxViewModel
, IMvxServiceConsumer<IInstallMeterRepository>
{
public List<InstalledMeterListItemViewModel> List { get; set; }
public InstalledMetersListViewModel()
{
List = new List<InstalledMeterListItemViewModel>();
foreach (var meter in this.GetService<IInstallMeterRepository>().GetInstalledMeters())
{
List.Add(new InstalledMeterListItemViewModel { Serial = meter.Serial, Description = meter.Description });
}
}
public IMvxCommand ShowDetailsCommand
{
get
{
return new MvxRelayCommand<InstalledMeterListItemViewModel>(type => RequestNavigate<InstalledMeterListItemViewModel>(new {serial = type.Serial.ToString()}));
}
}
}
with this View
<ListBox ItemsSource="{Binding List}" x:Name="TheListBox">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderThickness="5,5,5,5" BorderBrush="White">
<Grid Width="auto" HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Text="S/N"/>
<TextBlock Text=" : " Grid.Column="1"/>
<TextBlock Text="{Binding Serial}" Grid.Column="2"/>
<TextBlock Text="Description" Grid.Row="1"/>
<TextBlock Text=" : " Grid.Column="1" Grid.Row="1"/>
<TextBlock Text="{Binding Description}" Grid.Column="2" Grid.Row="1"/>
<Button Content="Details" Grid.Column="3" Grid.RowSpan="2" Command="{Binding Path=DataContext.ShowDetailsCommand, ElementName=TheListBox}" CommandParameter="{Binding}"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
The ViewModel I am navigating to is
public class InstalledMeterListItemViewModel : MvxViewModel,
IMvxServiceConsumer<IInstallMeterRepository>
{
public InstalledMeterListItemViewModel(string serial)
{
IInstalledMeter meter = this.GetService<IInstallMeterRepository>().GetMeter(Convert.ToDouble(serial));
Description = meter.Description;
Serial = meter.Serial;
}
public InstalledMeterListItemViewModel()
{
}
Problem accessing object - most likely this is caused by an anonymous object being generated as Internal - please see Anonymous types and Get accessors on WP7.1?
But I dont use any internal classes, so I cant see how I can fix this