2013-02-20 8 views
5

Ich habe dieses XAML, um eine ListView in einem C++/CX Code anzuzeigen. Die ListView wird als Auswahlmenü verwendet.Listview Auswahl-Display mit keine Polsterung und kein Häkchen

<ListView x:Name="itemsListView" 
ItemsSource="{Binding Source={StaticResource MenuDataSourceCVS}}" 
HorizontalAlignment="Stretch" 
Width="230" 
Margin="0,45,0,0" 
VerticalAlignment="Top" 
Grid.Row="1" 
SelectionChanged="itemsListView_SelectionChanged" SelectionMode="Single" 
HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" 
FontFamily="Global User Interface"> 
<ListView.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal" Height="40" Width="230"> 
      <TextBlock Text="{Binding Name}" 
       Margin="10,5" Width="150" Height="30" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch"/> 
      <Border Height="30" Width="30" Margin="5"> 
       <Image Source="{Binding ImageSrc}" Stretch="Fill"/> 
      </Border> 
     </StackPanel> 
    </DataTemplate> 
</ListView.ItemTemplate> 
</ListView> 

Wie Sie in der Abbildung unten die Auswahl besetzen sieht nicht alle Spalte und zeigt ein Häkchen, wenn ausgewählt.

ListView Selection with checkmark and padding

Gibt es eine Möglichkeit, diese Polsterung und das Häkchen zu beseitigen?

Antwort

16

Sie müssen Ihre Ansicht in Blend öffnen, dann mit der rechten Maustaste auf die Liste klicken und "Zusätzliche Vorlagen bearbeiten"/"Generierten Objektcontainer bearbeiten (ItemContainerStyle)"/"Kopie bearbeiten" auswählen. Dann können Sie die Style für die ListViewItem, die von der ListView erzeugt wird, bearbeiten, wenn es mit Ihren Artikeln bestückt ist. In der Registerkarte "States" auf der linken Seite können Sie die von der ListViewItem verwendeten Status sehen. Wenn Sie eine davon auswählen, wird auf der Entwurfsoberfläche angezeigt, wie das ListViewItem in diesem Status aussieht. Außerdem wird in den Aufzeichnungsmodus gewechselt, in dem Sie die Eigenschaftswerte verschiedener Elementeigenschaften der Vorlage definieren können. Dann können Sie sehen, welche Elemente von visuellen Zustandsanimationen betroffen sind, und diese Animationen entweder ändern oder die Elemente selbst entfernen. Wenn Sie ein Element in Blend entfernen, werden alle zugehörigen visuellen Statusanimationen automatisch gelöscht. In Ihrem Fall können Sie also sehen, dass SelectionStatesVisualStatesGroup der -Status Opacity des Elements 0 in 1 ändert. Sie können diesen Zielwert entweder in Opacity ändern Alle Zustände, die es zu einem anderen gewünschten Wert ändern oder einfach das SelectionBackground Element entfernen, indem Sie es im "Objekte und Zeitleiste" Panel auswählen (es wird es tatsächlich aus der Vorlage für alle Zustände entfernen und alle Animationen entfernen, die es betreffen). Dann können Sie auch HintGlyphBorder, SelectingGlyph, SelectedCheckMarkOuter entfernen.

Um die Aufzeichnung zu entfernen, stellen Sie sicher, dass die Aufnahme für den Status entweder durch Klicken auf die kleine rote Aufnahmetaste oder durch Umschalten des aktuell angezeigten Status in der Registerkarte "Status" auf "Basis" deaktiviert ist. Wählen Sie dann ContentBorderMargin in der Registerkarte "Eigenschaften" zu 0,0,0,0 und das gleiche für SelectedBorder.

Hier ist eine kommentierte Screenshot von Blend: enter image description here

+5

Filip, sollte dies ein Blog-Artikel sein. Schreibe es, damit ich es verlinken kann! –

+0

Warum nicht einfach auf diese Antwort verlinken - http://stackoverflow.com/questions/14987745/listview-selection-display-with-no-padding-and-no-checkmark/14990251#14990251? :) –

+2

Ernsthaft, es gibt so viel gutes Material auf StackOverflow - ich würde gerne einige meiner Antworten auf meinem Blog haben, aber ich bin mir nicht sicher über den Wert, da jeder hier sowieso zuerst schauen wird. –

Verwandte Themen