У меня есть список просмотра "updateList" с множественным выбором. Я хочу, если пользователь щелкает (выбирает / проверяет) элемент в списке, он переходит к списку «selectedUpdateList». И если пользователь щелкает (не проверяет) тот же элемент в просмотре списка, то этот элемент будет удален из представления списка selectedUpdateList.
XAML:
<ListView x:Name="updateList" Grid.Row="1" Margin="20,10,20,20"
AutomationProperties.AutomationId="ItemsListView"
AutomationProperties.Name="Items"
ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
ScrollViewer.VerticalScrollBarVisibility="Visible"
IsSwipeEnabled="False" SelectionMode="Multiple"
IsItemClickEnabled="True" IsMultiSelectCheckBoxEnabled="True" ItemClick="UpdateList_ItemClick">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Margin="0,20,0,0" HorizontalAlignment="Stretch" Background="{x:Null}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!--<CheckBox Grid.Column="0" />-->
<Image Grid.Column="1" Height="110" Width="168" Source="images/folder2.png" />
<TextBlock Margin="0,0,10,0" Text="{Binding ID}" Grid.Row="0" Foreground="Black" FontSize="17" VerticalAlignment="Top" HorizontalAlignment="Left" Height="auto" FontFamily="Segoe UI Black" TextWrapping="Wrap" TextAlignment="Justify" FontWeight="SemiBold" Visibility="Collapsed"/>
<ScrollViewer Grid.Column="2" VerticalAlignment="Top" HorizontalAlignment="Left" Height="95" Background="{x:Null}" Margin="10,5,0,0" VerticalScrollBarVisibility="Auto">
<TextBlock Margin="0,0,10,0" Text="{Binding Judul}" Grid.Row="0" Foreground="Black" FontSize="17" VerticalAlignment="Top" HorizontalAlignment="Left" Height="auto" FontFamily="Segoe UI Black" TextWrapping="Wrap" TextAlignment="Justify" FontWeight="SemiBold"/>
</ScrollViewer>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
<ListView x:Name="selectedUpdateList" Grid.Row="1" Margin="20,10,20,20"
AutomationProperties.AutomationId="ItemsListView"
AutomationProperties.Name="Items" Visibility="Collapsed"
ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
ScrollViewer.VerticalScrollBarVisibility="Visible"
IsSwipeEnabled="False"
IsItemClickEnabled="False" IsTapEnabled="False">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Margin="0,20,0,0" HorizontalAlignment="Stretch" Background="{x:Null}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Height="110" Width="168" Source="images/folder2.png" />
<TextBlock Margin="0,0,10,0" Text="{Binding ID}" Grid.Row="0" Foreground="Black" FontSize="17" VerticalAlignment="Top" HorizontalAlignment="Left" Height="auto" FontFamily="Segoe UI Black" TextWrapping="Wrap" TextAlignment="Justify" FontWeight="SemiBold" Visibility="Collapsed"/>
<Grid Grid.Column="1" Margin="10,5,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<ScrollViewer Grid.Row="0" Margin="0,0,5,5" VerticalAlignment="Top" HorizontalAlignment="Left" Height="45" Background="{x:Null}" VerticalScrollBarVisibility="Auto">
<TextBlock Margin="0,0,10,10" Text="{Binding Judul}" Grid.Row="0" Foreground="Black" FontSize="17" VerticalAlignment="Top" HorizontalAlignment="Left" Height="auto" FontFamily="Segoe UI Black" TextWrapping="Wrap" TextAlignment="Justify" FontWeight="SemiBold"/>
</ScrollViewer>
</Grid>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
Код:
try
{
string urlPath = "http:/..../index.php/fetchupdate";
var httpClient = new HttpClient(new HttpClientHandler());
var values = new List<KeyValuePair<string, string>>
{
};
string jsonText = await response.Content.ReadAsStringAsync();
JsonArray jsonArray = JsonArray.Parse(jsonText);
foreach (JsonValue groupValue in jsonArray)
{
JsonObject groupObject = groupValue.GetObject();
string idfile = groupObject["idfile"].GetString();
string judul = groupObject["judul"].GetString();
UpdateData update = new UpdateData();
update.ID = idfile;
update.Judul = judul;
DataUpate.Add(update);
}
updateList.ItemsSource = DataUpate;
}
catch (HttpRequestException ex)
{
requestErrorStack.Visibility = Visibility.Visible;
}
private void UpdateList_ItemClick(object sender, ItemClickEventArgs e)
{
if (e.ClickedItem is UpdateData selectedItem)
{
selectedItem.IsSelected = !selectedItem.IsSelected;
if (selectedItem.IsSelected == true)
{
UpdateData selected = new UpdateData();
selected.Judul = selectedItem.Judul;
selected.ID = selectedItem.ID;
selectedData.Add(selected);
}
else
{
UpdateData selected = new UpdateData();
selected.Judul = selectedItem.Judul;
selected.ID = selectedItem.ID;
selectedUpdateList.Items.Remove(selected);
}
}
selectedUpdateList.ItemsSource = selectedData;
}
Если вы используете приведенный выше код при нажатии на элемент (не отмеченный) в просмотре списка «updateList», этот элемент не удаляется из представления списка «selectedUpdateList». Как с этим справиться?