Sto sviluppando un'app UWP, con l'SDK di Light and Behaviors di Mvvm. Ho definito un multi ListView selezionabile:ListView SelectedItems binding: perché l'elenco è sempre nullo
<ListView
x:Name="MembersToInviteList"
IsMultiSelectCheckBoxEnabled="True"
SelectionMode="Multiple"
ItemsSource="{Binding Contacts}"
ItemTemplate="{StaticResource MemberTemplate}">
</ListView>
mi piacerebbe, con un pulsante rilegata ad un MVVM-LightRelayCommand, per ottenere un elenco con gli elementi selezionati:
<Button
Command="{Binding AddMembersToEvent}"
CommandParameter="{Binding ElementName=MembersToInviteList, Path=SelectedItems}"
Content="Ok"/>
La RelayCommand (di MVVM- quadro chiaro):
private RelayCommand<object> _addMembersToEvent;
public RelayCommand<object> AddMembersToEvent
{
get
{
return _addMembersToEvent
?? (_addMembersToEvent = new RelayCommand<object>(
(selectedMembers) =>
{
// Test
// selectedMembers is always null!
}));
}
}
ho messo un punto di interruzione all'interno del comando, e ho notato che è sempre selectedMembers null
, anche se io seleziona vari oggetti. Dall'output della console non vedo alcun errore di binding o qualcos'altro.
Inoltre, se si passa come CommandParameter all'intero elenco e si inserisce un punto di interruzione all'interno della definizione del comando, noto che non è possibile accedere al valore SelectedItems né SelecteRanges.
<DataTemplate x:Name="MemberTemplate">
<Viewbox MaxWidth="250">
<Grid Width="250"
Margin="5, 5, 5, 5"
Background="{StaticResource MyLightGray}"
BorderBrush="{StaticResource ShadowColor}"
BorderThickness="0, 0, 0, 1"
CornerRadius="4"
Padding="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0"
Width="45"
Height="45"
Margin="5,0,5,0"
VerticalAlignment="Center"
CornerRadius="50">
<Grid.Background>
<ImageBrush AlignmentX="Center"
AlignmentY="Center"
ImageSource="{Binding Image.Url,
Converter={StaticResource NullGroupImagePlaceholderConverter}}"
Stretch="UniformToFill" />
</Grid.Background>
</Grid>
<TextBlock Grid.Column="1"
Margin="3"
VerticalAlignment="Center"
Foreground="{StaticResource ForegroundTextOverBodyColor}"
Style="{StaticResource LightText}"
Text="{Binding Alias}" />
</Grid>
</Viewbox>
</DataTemplate>
Qual è il motivo? Come posso ottenere tale lista?
Il RelayCommand è un'implementazione 'ICommand' scritta da te o proviene dal framework MVVM-Light? – Tomtom
@Tomtom Mvvm MVVM-Light framework –
Puoi mostrarci il tuo ItemTemplate? – Tomtom