2014-09-26 27 views
0

我正在開發一個Windows應用商店應用。我已經實現了一個listview。 listview包含圖像,文本塊和複選框控件。我的列表視圖從互聯網獲取數據我已經完成了xml解析與列表視圖和綁定數據到列表視圖。我想從列表視圖中獲取所有數據,其中複選框在列表視圖中被選中。 我的XAML代碼是:使用複選框獲取已檢查的listview項目windows store app c#

<ListView Name="display" ItemsSource="{Binding}" SelectionMode="Single" 
SelectionChanged="display_SelectionChanged" 
ScrollViewer.HorizontalScrollMode="Enabled" ScrollViewer.HorizontalScrollBarVisibility="Visible" 
ItemContainerStyle="{StaticResource ListViewItemStyle12}" > 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
     <StackPanel x:Name="stak2" Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Vertical"> 
      <Image Source="{Binding Path=Image}" Width="450" Tapped="image_taped" /> 
      <CheckBox Tag="{Binding Path=tag}" Visibility="{Binding Path=visichk}" Height="40"  Name="addremove" 
       HorizontalAlignment="Center" Checked="add_checked" Unchecked="sub_checked" Opacity="0.5" 
       Background="White" VerticalAlignment="Top" Template="{StaticResource CheckboxImageTemplate}" > 
      </CheckBox> 
      <TextBlock Text="{Binding Image_code}" FontSize="25" Foreground="Gray" HorizontalAlignment="Center" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

數據源的列表視圖:現在

XDocument xmlDoc = XDocument.Parse(responseString); 
var Categories = xmlDoc.Descendants("product").ToArray(); 
List<ProductData> displaylst = new List<ProductData>(); //ProductData is my Class. 

foreach (var cat in Categories) 
{ 
    string prId = cat.Elements("id_products").Select(r => r.Value).FirstOrDefault(); 
    List<string> Image = cat.Descendants("images").Elements("src").Attributes("largimage").Select(r => r.Value).ToList(); 

    List<string> Image_code = cat.Descendants("images").Elements("src").Select(r => r.LastAttribute.Value).ToList(); 
    int i = 0; 
    foreach (string img in Image) 
    { 
     displaylst.Add(new ProductData { Id = prId, Image = img, Image_code = Image_code[i] }); 
     i++; 
    } 
} 

display.ItemsSource = displaylst;    

上的一個按鈕,點擊我要得到其中的複選框從列表視圖中選中像PRID,圖片,Image_code產品的數據和把它放到簡單的列表中。

我該怎麼做,請幫助我。提前致謝。

回答

1

首先,讓我們的屬性添加到您的ProductData類

public class ProductData 
{ 
    public string Id { get; set; } 
    public string Image { get; set; } 
    // I dont know exactly what's in this class 
    // ... more properties 

    // Add this one 
    public bool IsSelected { get; set; } 
} 

現在,我們有一個布爾IsSelected我們ProductData類中,我們可以知道哪些選擇。

在第二的foreach改變這一行

// Set IsSelected to false by default 
displaylst.Add(new ProductData { IsSelected = false, Id = prId, Image = img, Image_code = Image_code[i] }); 

,並綁定「器isChecked」您的複選框的財產IsSelected

<CheckBox IsChecked="{Binding Path=IsSelected}" Tag="{Binding Path=tag}" Visibility="{Binding Path=visichk}" Height="40"  Name="addremove" 
      HorizontalAlignment="Center" Checked="add_checked" Unchecked="sub_checked" Opacity="0.5" 
      Background="White" VerticalAlignment="Top" Template="{StaticResource CheckboxImageTemplate}" > 

有了綁定,當您選中該複選框,則associed productData之一IsSelected屬性將自動變爲「true」。

所以,現在你只需要做一個新的列表,然後僅ProductData其中IsSelected是真實的:

List<ProductData> listOfSelectedProducts = (from product in displaylst 
              where product.IsSelected == true 
              select product).ToList(); 

在這裏你去你有ProductData與唯一入選的產品列表。

+0

謝謝。我如何實現增量加載到這個應用程序。請幫幫我。 – 2014-10-17 07:17:18

相關問題