我正在尋找一個方式在一個ListView選擇幾個項目,我解釋我的問題,因爲也許還有一個更簡單的方法來做到這一點:WPF列表視圖設置幾個選定的項目
private void symetrieX_Click(object sender, RoutedEventArgs e)
{
if (this.ListView4.SelectedItems.Count > 0)
{
if (this.ListView3.SelectedItems.Count == 1)
{
Meb meb = (Meb)ListView3.SelectedItem;
CollectionViewSource itemCollectionViewSource4;
itemCollectionViewSource4 = (CollectionViewSource)MainGrid2.FindResource("ItemCollectionViewSource4");
foreach (Repere repere in meb.liste_reperes)
{
for (int i = 0; i < ListView4.SelectedItems.Count; i++)
{
if (repere.Position == ((Repere)ListView4.SelectedItems[i]).Position)
{
repere.SymX = !repere.SymX;
}
}
}
Profil profil = new Profil(meb.Profil);
double[] echelle = calcul_echelle(meb.Longueur, profil);
meb = recalcul_pieces(meb);
monDessin.Children.Clear();
Draw_barre(meb.Longueur, profil, echelle, meb.CNC);
Draw_pieces(meb, echelle);
itemCollectionViewSource4.Source = new ObservableCollection<Repere>();
itemCollectionViewSource4.Source = meb.liste_reperes;
}
}
}
在該代碼中我讀我的ListView「ListView4」中的所有選定項目,並將它們轉換爲「Repere」列表,然後我將所有選定項目應用symetry,然後將修改後的列表發送回我的ListView Source,以更新ListView。 問題是,當我這樣做:
itemCollectionViewSource4.Source = new ObservableCollection<Repere>();
itemCollectionViewSource4.Source = meb.liste_reperes;
選定的項目未被選擇...
我想只是保存在臨時列表中選擇的項目,我想在年底做類似的東西:
foreach (ListViewItem item in Listview4)
{
foreach (Repere rep in temporary_list)
{
item.Selected = rep==(Repere)item;
}
}
我嘗試了很多方法,但找不到正確的方法來做到這一點。
最後,我想知道如果我做得正確,也許有一種方法來修改我的ListView,沒有做所有的東西,所以沒有「重置」源?
在此先感謝您的幫助
編輯:我發現了一個解決方案來「解決」,但正如我所說,我不知道這是最好的方法:
在開始的時候我救列表中的所有選定項目。 然後我讓新觀察集合後,我做到以下幾點:
itemCollectionViewSource4.Source = new ObservableCollection<Repere>();
itemCollectionViewSource4.Source = meb.liste_reperes;
foreach(Repere rep in liste_temp)
{
ListView4.SelectedItems.Add(rep);
}
但我覺得我做很多的「爲」只用於更新一個值。這在時間上並不成問題,因爲我會在名單上列出最多10-20個項目,但我覺得它不是很「乾淨」的方式。