【发布时间】:2022-11-16 22:20:25
【问题描述】:
如果用户与我们在代码后面添加/删除的列表视图交互,我们有一个可观察的集合SelectedPartys。
<ListView
x:Name="LV_Partys"
IsMultiSelectCheckBoxEnabled="True"
ItemsSource="{x:Bind ViewModel.PartysOC, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectionChanged="LV_Partys_SelectionChanged"
SelectionMode="Extended">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Margin="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<TextBlock Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" TextWrapping="NoWrap" />
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
private ObservableCollection<Party> partysOC;
public ObservableCollection<Party> PartysOC
{
get => partysOC;
set => Set(ref partysOC, value);
}
private void LV_Partys_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var added_items = e.AddedItems.Cast<Party>().ToList();
foreach (var item in added_items)
{
ViewModel.SelectedPartys.Add(item);
}
var removed_items = e.RemovedItems.Cast<Party>().ToList();
foreach (var item in removed_items)
{
ViewModel.SelectedPartys.Remove(item);
}
ViewModel.SelectedPartyChanged();
}
我们需要将ListViews选中的item保存到Db中,然后恢复预选在 ListView 中,为此我相信我们需要以编程方式选择一个项目,我们该怎么做?
【问题讨论】: