ListViewItem modèle personnalisé: ContentPresenter reste vide
J'ai le texte suivant ListView dans mon code. views:GameCard
est une coutume UserControl
et {Binding}
est valide DataContext
objet à trois éléments. Sans la coutume ItemContainerStyle
tout fonctionne parfaitement — la liste montre trois GameCards
avec la bonne info, etc. Dès que j'ai ajouter le ItemContainerStyle
partie, je ne reçois rien, mais trois "ABCD"s; de sorte que les données sont toujours chargées correctement, mais mon UserControl
n'est plus affichée (j'ai seulement ajouté les "ABCD" afin de vérifier si les données ont été il y, sinon, je n'ai rien mais vide de la boîte).
Chaque morceau de l'info que j'ai pu trouver en ligne, ce qui semble indiquer que juste mettre un ContentPresenter
élément dans le modèle devrait fonctionner, mais il ne semble pas dans ce cas. Ce qui me manque?
<ListView Grid.Row="1" ItemsSource="{Binding}" BorderThickness="0,0,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF614B4B" Offset="0"/>
<GradientStop Color="#FFDA7070" Offset="1"/>
</LinearGradientBrush>
</ListView.Background>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<views:GameCard />
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<TextBlock Text="ABCD" />
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
<ContentPresenter Content="{Binding}"...
OriginalL'auteur Modus Operandi | 2013-01-14
Vous devez vous connecter pour publier un commentaire.
Vous devez définir la TargetType de votre ControlTemplate. Et afin de rendre votre ItemTemplate de travail, vous auriez également besoin de lier la
Content
etContentTemplate
propriétés.Cela fonctionne, mais il perd le bleu rectangle de sélection pour l'élément sélectionné... de toute façon, que peut-elle être préservée?
Le rectangle de sélection doit être une partie de la ListViewItem ControlTemplate (par exemple comme un autre enfant de l'élément de la Grille). Vous pouvez prendre un coup d'oeil à par défaut ListViewItem style pour avoir une idée de comment il pourrait ressembler.
OriginalL'auteur Clemens
Cela peut ne pas être le cas avec vous, mais jusqu'à présent, je n'ai pas eu à modifier la ItemContainerStyle pourtant, il suffit de la ListView.Vue. Puisque vous êtes de mettre une Grille dans votre style de modèle je suppose que vous êtes à la recherche d'un GridView et ce est la façon de le faire:
OriginalL'auteur Sten Petrov
votre style et tout va bien .Tout ce qui est nécessaire pour Attribuer ou de lier la Contenu de la propriété à votre ContentPresenter. J'espère que cela aidera.
ControlTemplate
besoin d'unTargetType
.OriginalL'auteur ethicallogics