2017-03-24 17 views
0

In Windows Universal-App zu verhindern, ich habe eine Pivot-Tabelle, die jeder Reiter Inhalt hat gridview, gridview Artikel Multi-Auswahlmodus ist,Wie deaktivieren (deaktivieren) gridview Artikel in Fenstern Universal-App

Was ich will, dass, wenn eine ein Element einmal geprüft (ausgewählt), dann wird es nicht in der Lage zu deselektieren (uncheck)

<Grid DataContext="{Binding Path=Value}"> 
          <GridView x:Name="categoryItemsGV" 
           Margin="5,5,0,0" 
           SizeChanged="categoryItemsGV_SizeChanged" 
           IsItemClickEnabled="True" 
           ItemClick="categoryItemsGV_ItemClick" 
           SelectionMode="Single" 
           ItemsSource="{Binding}"> 
           <GridView.ItemContainerStyle> 
            <Style TargetType="GridViewItem"> 
             <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
             <!--<Setter Property="VerticalContentAlignment" Value="Center"/>--> 
            </Style> 
           </GridView.ItemContainerStyle> 
           <GridView.ItemTemplate> 
            <DataTemplate> 
             <Grid Width="195" Height="43" Margin="3"> 
              <StackPanel Width="193" Height="40" Background="Gray" Opacity="0.5" HorizontalAlignment="Right" VerticalAlignment="Bottom" /> 
              <StackPanel Orientation="Horizontal" Width="193" Height="40" Padding="7,7,0,0" Background="#FDFCC2" HorizontalAlignment="Left" VerticalAlignment="Top"> 
               <TextBlock Text="{Binding ProductOptionLineName}" FontSize="18" MaxLines="1" TextTrimming="CharacterEllipsis" Visibility="{Binding Converter={StaticResource langToVisibilityConverter}, ConverterParameter='CH', Mode=OneWay}"> 
               </TextBlock> 
               <TextBlock Text="{Binding ProductOptionLineNameEn}" FontSize="18" MaxLines="1" TextTrimming="CharacterEllipsis" Visibility="{Binding Converter={StaticResource langToVisibilityConverter}, ConverterParameter='EN', Mode=OneWay}"/> 
               <TextBlock Text="{Binding ExtraPriceString}" FontSize="18" Margin="2,0,0,0"></TextBlock> 
              </StackPanel> 
             </Grid> 
            </DataTemplate> 
           </GridView.ItemTemplate> 
          </GridView> 
         </Grid> 


    private async void categoryItemsGV_ItemClick(object sender, ItemClickEventArgs e) 
     { 

       var item = e.ClickedItem as ProductOptionLineModel; 
     } 

Antwort

0

Wenn wir Element ausgewählt behalten möchten, wie es bereits ausgewählt wurde, unter Ansatz.

und wenn wir möchten, dass die Objektauswahl auf "Klick" (nicht ausgewählt) für Validierungszwecke deaktiviert bleibt. unter Ansatz verwendet.

private async void categoryItemsGV_ItemClick(object sender, ItemClickEventArgs e) 
     { 

       var item = e.ClickedItem as ProductOptionLineModel; 
          await _viewModel.DialogService("FirstRequireMinOption", "", true); 
          GridView gv = sender as GridView; 
          gv.SelectedItems.Add(item); 
     } 
1

Wir können die SelectRange(ItemIndexRange) Verfahren verwenden, um einen Block von Elementen durch die ItemIndexRange beschriebenen auswählt.

Wenn Sie SelectRange (ItemIndexRange) aufrufen, werden alle Elemente im angegebenen Bereich unabhängig vom ursprünglichen Auswahlstatus ausgewählt. Sie können alle Elemente in einer Sammlung auswählen, indem Sie einen ItemIndexRange mit einem FirstIndex-Wert von 0 und einem Length-Wert verwenden, der der Anzahl der Elemente in der Auflistung entspricht.

Weitere Informationen finden Sie unter Remarks of the SelectRange(ItemIndexRange).

Wir können die ItemClick verwenden, um zu erhalten, welches Element angeklickt wird. Dann können wir das Ereignis SelectionChanged hinzufügen und die Nummer des angeklickten Elements auf die Methode SelectRange setzen.

Zum Beispiel:

private int number; 

private void categoryItemsGV_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    var item = e.ClickedItem as ProductOptionLineModel; 
    number = ProductOptionLineModels.IndexOf(item); 
} 

private void categoryItemsGV_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    categoryItemsGV.SelectRange(new ItemIndexRange(number, 1)); 
} 
Verwandte Themen