0

GridView'umdaki öğeleri sıralamak istiyorum.Evrensel Windows Platformunda GridView Sıralama

<GridView x:Name="ivGridView" Margin="70,40,10,10" SelectionChanged="ivGridView_SelectionChanged"> 
     <GridView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Margin="0,0,0,10" Width="121" Height="128" VerticalAlignment="Top" Background="#19000000"> 
        <Image Source="{Binding Image}" VerticalAlignment="Top" Height="88" Margin="0,0,0,0" RenderTransformOrigin="0.5,0.5" > 
         <Image.RenderTransform> 
          <CompositeTransform ScaleX="1.2" ScaleY="1.2"/> 
         </Image.RenderTransform> 
        </Image> 
        <StackPanel Background="{Binding Color}" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"> 
         <TextBlock Text="{Binding wpn}" Foreground="White" Margin="10,0,0,0" /> 
         <TextBlock Text="{Binding sname}" Foreground="White" Margin="7,0,0,0" FontWeight="Light" /> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </GridView.ItemTemplate> 

Bunları nasıl sıralayabilirsiniz:

Benim GridView benziyor?

cevap

2

@ Filip'in fikrine ek olarak, Öğeleri GridView'da nasıl sıralayacağınızla ilgili ayrıntılı bilgileri size göstereceğim.

public class Test 
{ 
    public BitmapImage Image { get; set; } 
    public SolidColorBrush Color { get; set; } 
    public string wpn { get; set; } 
    public string sname { get; set; } 
} 
:

Örneğin o zaman veri için aşağıdaki sınıf birinci bağlayıcı tanımlamanız gerekir, WPN binded edilmiştir TextBlock metnin ilk harfi dayalı GridView Ürünleri sıralamak istediğiniz Bundan sonra

biz sütununun WPN ilk harfine göre ListView sıralamak için ObservableCollection OrderBy yöntemi kullanmak ve şöyle GridView ItemsSource için ObservableCollection bağlayabilir:

public ObservableCollection<Test> TestOC = new ObservableCollection<Test>(); 
    public MainPage() 
    { 
     this.InitializeComponent(); 
     TestOC.Add(new Test() {wpn="BB",sname="BBB",Image = new BitmapImage(new Uri("ms-appx:///Capture.PNG")),Color=new SolidColorBrush(Colors.Red)}); 
     TestOC.Add(new Test() { wpn = "CC", sname = "CCC", Image = new BitmapImage(new Uri("ms-appx:///Capture.PNG")), Color = new SolidColorBrush(Colors.Green) }); 
     TestOC.Add(new Test() { wpn = "AA", sname = "AA", Image = new BitmapImage(new Uri("ms-appx:///Capture.PNG")), Color = new SolidColorBrush(Colors.Orange) }); 
     var SortResult = TestOC.OrderBy(a => a.wpn);   
     ivGridView.ItemsSource =SortResult; 
    } 

sonucu:

enter image description here

teşekkürler.

+0

Bir * Liste * yerine, muhtemelen daha iyi bir seçim * GözlemlenebilirKoleksiyon *, öğelerin yalnızca herhangi bir zamanda * ItemsSource * olarak ayarlanmadan önce sıralanmasına izin verir. – Romasz

+0

Evet, haklısınız. ObservableCollection kullanmak daha iyi bir seçim olabilir. Ve cevabımı güncelledim. :), Teşekkür ederim. –

+0

Bu, bir 'ObservableCollection' öğesini genellikle _not_ idea olan 'ItemsSource 'ayarını yapmaya devam etmek zorunda kalmadan nasıl sıralayabileceğinizi göstermez. Bu soruya daha iyi cevap verilebilecekse +1. –

0

Görünümdeki öğeleri sıralamak için ilişkili ItemsSource öğesini sıralayabilirsiniz.